WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 03.08.2019 22:19:31

chap
Mitglied

[Droplet] Topics Anzeigen lassen

Ich komme mal auf den Beitrag hier zurück: Die letzten X Artikel eines User ausgaben.

Lässt sich das ganze auch nur mit Topics Steuern? Ohne User?

Das Droplet als Code wie ich es bereits habe:

[== PHP ==]
$aPosts  = array();
$sOutput = '[[shorturl]]';
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;

Kann man das nun so gestalten das es mit:

[[last_topics_by_cat?cat_id=?&amount=5]]

Die "cat_id" soll die ID sein die das Topics entsprechend hat. Angenommen im Topics hab ich "Allgemein" und die hat die ID 5. Das ich dann also mit der ID 5 nur die ID 5 Topics anzeigen lassen kann. zb. mit 5 Stück nur.

Geht das ?


Liebe Grüße,
cHAp

Offline

#2 04.08.2019 10:45:38

stefanek
Developer

Re: [Droplet] Topics Anzeigen lassen

Ich habe Topics grad nicht zur Hand, aber ich denke es benötigt kaum Änderung an dem Code.

das hier:

if (isset( $user_id )){

ändern in

if (isset( $cat_id )){

und die Query

    $sSql = "SELECT * FROM `".TABLE_PREFIX."mod_topics` WHERE `posted_by` = '".(int) $user_id."' ORDER BY `published_when` DESC" . $sLimit;

ändern zu

    $sSql = "SELECT * FROM `".TABLE_PREFIX."mod_topics` WHERE `cat_id` = '".(int) $cat_id."' ORDER BY `published_when` DESC" . $sLimit;

Bitte schau, ob es tut.

Gruß,
Christian


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

Online

#3 04.08.2019 11:03:01

chap
Mitglied

Re: [Droplet] Topics Anzeigen lassen

Hab es mal gemacht wie du gesagt hast. Bekomme aber folgenden Fehlermeldung:

[== PHP ==]
Fatal error: Uncaught Error: Call to a member function numRows() on null in /www/htdocs/****/modules/droplets/droplets.php(24) : eval()'d code:8 Stack trace: #0 /www/htdocs/****/modules/droplets/droplets.php(24): eval() #1 /www/htdocs/****/modules/droplets/droplets.php(89): do_eval('$aPosts = arra...', Array, '<!DOCTYPE HTML>...') #2 /www/htdocs/****/modules/droplets/droplets.php(128): processDroplets('<!DOCTYPE HTML>...', 'frontend') #3 /www/htdocs/****/modules/mod_opf_droplets/filter.php(63): evalDroplets('<!DOCTYPE HTML>...', 'frontend') #4 /www/htdocs/****/modules/outputfilter_dashboard/functions.php(1247): opff_mod_opf_droplets('<!DOCTYPE HTML>...', '90', false, false, Object(Frontend)) #5 /www/htdocs/****/modules/outputfilter_dashboard/functions.php(1701): opf_apply_filters('<!DOCTYPE HTML>...', '7page', false, '90', false, Object(Frontend)) #6 /www/htdocs/****/index.php(82 in /www/htdocs/****/modules/droplets/droplets.php(24) : eval()'d code on line 8

Droplet sieht aktuell so aus:

[== PHP ==]
$aPosts  = array();
$sOutput = '[[shorturl]]';
if (isset( $cat_id )){
    global $database;
    $sLimit = isset( $amount ) ? ' LIMIT '.(int) $amount : '';
    $sSql = "SELECT * FROM `".TABLE_PREFIX."mod_topics` WHERE `cat_id` = '".(int) $cat_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 class="article-list">';
    $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;

Eingebunden hab ich es mit:

[== HTML ==]
[[last_topics_by_cat?cat_id=71&amount=5]]

71 = Topics Abschnitt

Beitrag geändert von chap (04.08.2019 11:04:53)


Liebe Grüße,
cHAp

Offline

#4 04.08.2019 11:07:00

stefanek
Developer

Re: [Droplet] Topics Anzeigen lassen

Verstehe..
ich sehe grade, Topics hat keine cat_id.

Musst Chio mal unter einem seiner Nicknames anhauen, ob er Dir dabei helfen kann.
Habe heute nicht die Zeit mich in Topics zu vertiefen.

Schönen Gruß,
Christian


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

Online

#5 04.08.2019 11:08:34

chap
Mitglied

Re: [Droplet] Topics Anzeigen lassen

Achso ok...
hm...na mal sehn ob er sich da mal dazu meldet. Wäre ja Cool. wink


Liebe Grüße,
cHAp

Offline

#6 04.08.2019 11:09:11

stefanek
Developer

Re: [Droplet] Topics Anzeigen lassen

chap schrieb:

Die "cat_id" soll die ID sein die das Topics entsprechend hat. Angenommen im Topics hab ich "Allgemein" und die hat die ID 5. Das ich dann also mit der ID 5 nur die ID 5 Topics anzeigen lassen kann. zb. mit 5 Stück nur.

Ich weiß es nicht genau, weil ich kein Topics User bin, aber ich denke es wird über die Section ID gemacht.
Aber Chio kann Dir da sicher viel kompetenter helfen  wink


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

Online

Liked by:

chap

#7 04.08.2019 11:12:43

chap
Mitglied

Re: [Droplet] Topics Anzeigen lassen

Jap richtig... Ich glaube auch das esdie Section_ID ist in der Datenbank. Hab die mir angeschaut gerade.
Wie machen wir das da mit der Section_ID?


Liebe Grüße,
cHAp

Offline

#8 04.08.2019 11:20:44

chap
Mitglied

Re: [Droplet] Topics Anzeigen lassen

Problem gelöst. Hab aus dem Droplet das cat_id einfach in section_id geändert.
Das scheint es dann wohl gewesen zu sein. smile Sieht bisher gut aus. smile


Liebe Grüße,
cHAp

Offline

Liked by:

stefanek

#9 04.08.2019 11:25:06

stefanek
Developer

Re: [Droplet] Topics Anzeigen lassen

Wunderbar.


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

Online

Liked by:

chap

#10 04.08.2019 11:25:57

chap
Mitglied

Re: [Droplet] Topics Anzeigen lassen

Schön auch mal wieder was dazu zu lernen... smile Danke für deine Hilfestellung. smile

Das Resultat ist bald auf https://www.xprog.de/ zu sehen. smile


Liebe Grüße,
cHAp

Offline

Liked by:

stefanek

#11 04.08.2019 11:43:37

chap
Mitglied

Re: [Droplet] Topics Anzeigen lassen

Ein kleiner Vorgeschmack, warum ich das Droplet benötige. smile


Liebe Grüße,
cHAp

Offline

Liked by:

stefanek

#12 05.08.2019 17:43:57

chap
Mitglied

Re: [Droplet] Topics Anzeigen lassen

Hallo,

Hat einer eine Idee wie ich dieses Droplet was nun funktioniert nochmal erstellen kann aber er keine section_id auslesen soll sondern einfach nur nach dem neusten Datum "published_when"?

[== PHP ==]
$aPosts  = array();
$sOutput = '[[shorturl]]';
if (isset( $cat_id )){
    global $database;
    $sLimit = isset( $amount ) ? ' LIMIT '.(int) $amount : '';
    $sSql = "SELECT * FROM `".TABLE_PREFIX."mod_topics` WHERE `section_id` = '".(int) $cat_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)){
    $sTPL = '<li><a href="[LINK]">[POST_TITLE]</a><br />[DESCRIPTION]</li>';
    foreach ($aPosts as $rec){
        $sOutput .= strtr($sTPL, $rec);
    }
} else {
    global $TEXT;
    $sOutput = $TEXT['NONE'];
}
return $sOutput;

Ich bekomme die Datenbank Abfrage einfach nicht auf die reihe... sad

So das der Aufruf per Droplet nur noch so wäre: [[last_topics?amount=5]]

Das wäre es eigentlich auch schon. smile

Beitrag geändert von chap (05.08.2019 17:46:01)


Liebe Grüße,
cHAp

Offline

#13 05.08.2019 18:39:08

florian
Administrator

Re: [Droplet] Topics Anzeigen lassen

Versuch mal so (nicht getestet)

$aPosts  = array();
$sOutput = '[[shorturl]]';

    global $database;
    $sLimit = isset( $amount ) ? ' LIMIT '.(int) $amount : '';
    $sSql = "SELECT * FROM `".TABLE_PREFIX."mod_topics` 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)){
    $sTPL = '<li><a href="[LINK]">[POST_TITLE]</a><br />[DESCRIPTION]</li>';
    foreach ($aPosts as $rec){
        $sOutput .= strtr($sTPL, $rec);
    }
} else {
    global $TEXT;
    $sOutput = $TEXT['NONE'];
}
return $sOutput;

Beitrag geändert von florian (05.08.2019 18:39:29)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

chap

#14 05.08.2019 18:41:14

bernd
Developer

Re: [Droplet] Topics Anzeigen lassen

Ungetestet, quick&dirty, zwischen Tür und Angel ;-)

$aPosts  = array();
$sOutput = '[[shorturl]]';
if (isset( $amount )){
    global $database;
    $sLimit = isset( $amount ) ? ' LIMIT '.(int) $amount : '';
    $sSql = "SELECT * FROM `".TABLE_PREFIX."mod_topics` 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)){
    $sTPL = '<li><a href="[LINK]">[POST_TITLE]</a><br />[DESCRIPTION]</li>';
    foreach ($aPosts as $rec){
        $sOutput .= strtr($sTPL, $rec);
    }
} else {
    global $TEXT;
    $sOutput = $TEXT['NONE'];
}
return $sOutput;

... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

chap

#15 05.08.2019 18:48:11

chap
Mitglied

Re: [Droplet] Topics Anzeigen lassen

Herzlichen Dank! Funktioniert super. smile


Liebe Grüße,
cHAp

Offline

Fußzeile des Forums

up