WBCE CMS – Way Better Content Editing.
You are not logged in.
Pages: 1
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
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
Offline
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
Last edited by chap (04.08.2019 10:04:53)
Liebe Grüße,
cHAp
Offline
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
Offline
Achso ok...
hm...na mal sehn ob er sich da mal dazu meldet. Wäre ja Cool.
Liebe Grüße,
cHAp
Offline
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
“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale
Offline
chap
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
Problem gelöst. Hab aus dem Droplet das cat_id einfach in section_id geändert.
Das scheint es dann wohl gewesen zu sein. Sieht bisher gut aus.
Liebe Grüße,
cHAp
Offline
stefanek
Wunderbar.
“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale
Offline
chap
Schön auch mal wieder was dazu zu lernen... Danke für deine Hilfestellung.
Das Resultat ist bald auf https://www.xprog.de/ zu sehen.
Liebe Grüße,
cHAp
Offline
stefanek
Ein kleiner Vorgeschmack, warum ich das Droplet benötige.
Liebe Grüße,
cHAp
Offline
stefanek
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...
So das der Aufruf per Droplet nur noch so wäre: [[last_topics?amount=5]]
Das wäre es eigentlich auch schon.
Last edited by chap (05.08.2019 16:46:01)
Liebe Grüße,
cHAp
Offline
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;
Last edited by florian (05.08.2019 17:39:29)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
chap
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
chap
Herzlichen Dank! Funktioniert super.
Liebe Grüße,
cHAp
Offline
Pages: 1