WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 05.11.2018 13:11:55

stefanek
Developer

[droplet] Die letzten X Artikel eines Users ausgeben

Ich habe hier ein kleines Droplet geschrieben, mit dem man die letzten Artikel eines bestimmten Users ausgeben kann.

Zu verwenden ist es so:
[[last_topics_by_user?user_id=3&amount=5]]
Bei user_id die UserID des Users eintragen
Bei amount die Anzahl der letzten Posts.

In's Droplet Tool eintragen => Neues Droplet
Bei Name: last_topics_by_user

Und dann den Code:

$aPosts  = array();
$sOutput = '';
if (isset( $user_id )){
    global $database;
    $sLimit = isset( $amount ) ? ' LIMIT '.(int) $amount : '';
    $sSql = "SELECT * FROM `".TABLE_PREFIX."mod_topics` WHERE `posted_by` = '".(int) $user_id."'" . $sLimit;
    $rQuery = $database->query($sSql);
    if($rQuery->numRows() > 0) {
        while($rec = $rQuery->fetchRow(MYSQL_ASSOC)) {
            $aPosts[] = array(
               '[POST_TITLE]'  => $rec['title'],               
               '[LINK]'        => WB_URL.PAGES_DIRECTORY.'/topics/'.$rec['link'].PAGE_EXTENSION, 
               '[DESCRIPTION]' => $rec['description'], 
            );  
        }
    }
}    

if (!empty($aPosts)){
    $sOutput .= '<ul>';
    $sTPL = '<li><a href="[LINK]">[POST_TITLE]</a><br>[DESCRIPTION]</li>';
    foreach ($aPosts as $rec){
        $sOutput .= strtr($sTPL, $rec);
    }
    $sOutput .= '</ul>';
} else {
    global $TEXT;
    $sOutput = $TEXT['NONE'];
}
return $sOutput;

Edit: Verwendungsbeispiel in diesem Thread: https://forum.wbce.org/viewtopic.php?id=2424


Viel Spaß,
Christian

Beitrag geändert von stefanek (07.11.2018 10:17:22)


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

Liked by:

florian, chap

#2 05.11.2018 13:36:47

chap
Mitglied

Re: [droplet] Die letzten X Artikel eines Users ausgeben

Abgespeichert. Herzlichen Dank Christian! smile


Liebe Grüße,
cHAp

Offline

Liked by:

stefanek

#3 05.11.2018 16:06:27

stefanek
Developer

Re: [droplet] Die letzten X Artikel eines Users ausgeben

Keine große Ursache, Chap.

Wie Du erkennen kannst, kannst Du das Droplet beliebig erweitern, also die [TOKEN] und deren Replacements.
Einfach in dem ersten Loop die Token hinzufügen und im zweiten Loop die Token setzen/verwenden.
Also alles was es in der Tabelle "mod_topics" zu finden gibt, kann hier in die Loops mit eingebaut werden.

Und das "Template" bzw. die HTML Ausgabe musst Du Dir entsprechend anpassen, die richtigen/gewünschten CSS Selektoren verwenden etc.

Gruß,
Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#4 13.11.2018 21:11:50

chap
Mitglied

Re: [droplet] Die letzten X Artikel eines Users ausgeben

Hallo @stefanek,
ich habe das nun umgesetzt. gibt nur ein Problem. Es zeigt mir zwar 5 Artikel an aber nicht die letzten 5 Erstellten Artikel sondern, wenn ich richtig liege die ersten 5 ältesten.

Siehe Foto im Anhang!


Liebe Grüße,
cHAp

Offline

#5 13.11.2018 22:37:44

stefanek
Developer

Re: [droplet] Die letzten X Artikel eines Users ausgeben

Wende Dich gerne mal an Chio, der kann Dir da sicher weiter helfen.
Ansonsten schaue ich mir das morgen Abend mal an.

Gruß,
Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#6 13.11.2018 22:45:48

chap
Mitglied

Re: [droplet] Die letzten X Artikel eines Users ausgeben

Ich hab grad versucht ein ORDER BY `published_when` DESC einzufügen aber das wollte nicht so wie ich es gerne hätte. smile

Bin der Meinung das einfach nur eine Sortierung noch fehlt in der SQL Abfrage. smile

Danke dir jedenfalls erstmal für deine Bemühungen. smile


Liebe Grüße,
cHAp

Offline

#7 13.11.2018 22:47:36

chap
Mitglied

Re: [droplet] Die letzten X Artikel eines Users ausgeben

Hat sich gerade erledigt. smile Mein Fehler, hab das hinter einen " gesetzt gehabt. Lach

$aPosts  = array();
$sOutput = '';
if (isset( $user_id )){
    global $database;
    $sLimit = isset( $amount ) ? ' LIMIT '.(int) $amount : '';
    $sSql = "SELECT * FROM `".TABLE_PREFIX."mod_topics` WHERE `posted_by` = '".(int) $user_id."' ORDER BY `published_when` DESC" . $sLimit;
    $rQuery = $database->query($sSql);
    if($rQuery->numRows() > 0) {
        while($rec = $rQuery->fetchRow(MYSQL_ASSOC)) {
            $aPosts[] = array(
               '[POST_TITLE]'  => $rec['title'],               
               '[LINK]'        => WB_URL.PAGES_DIRECTORY.'/topics/'.$rec['link'].PAGE_EXTENSION, 
               '[DESCRIPTION]' => $rec['description'], 
            );  
        }
    }
}    

if (!empty($aPosts)){
    $sOutput .= '<ul>';
    $sTPL = '<li><a href="[LINK]">[POST_TITLE]</a><br>[DESCRIPTION]</li>';
    foreach ($aPosts as $rec){
        $sOutput .= strtr($sTPL, $rec);
    }
    $sOutput .= '</ul>';
} else {
    global $TEXT;
    $sOutput = $TEXT['NONE'];
}
return $sOutput;

Beitrag geändert von chap (13.11.2018 22:48:38)


Liebe Grüße,
cHAp

Offline

#8 13.11.2018 22:57:50

chap
Mitglied

Re: [droplet] Die letzten X Artikel eines Users ausgeben

Ach und noch ein Tipp, wenn jemand das ShortURL einsetzt:

Zeile 2:
$sOutput = '';

Ersetzen mit:
$sOutput = '[[shorturl]]';

Dann funktioniert es auch mit den Links korrekt. smile


Liebe Grüße,
cHAp

Offline

Liked by:

stefanek

#9 13.11.2018 23:42:15

stefanek
Developer

Re: [droplet] Die letzten X Artikel eines Users ausgeben

Ah, sehr gut. Du lernst Programmierung und ich habe mehr Freizeit.
So ist schön  angel

Gruß,
Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#10 14.11.2018 01:07:03

chap
Mitglied

Re: [droplet] Die letzten X Artikel eines Users ausgeben

Bisschen was grieg ich noch hin. Ist ja nicht so das ich nichts dazu lernen will. Lach.


Liebe Grüße,
cHAp

Offline

Liked by:

stefanek

Fußzeile des Forums

up