Artikelliste, mal 'ne korrigierte Version
Verfasst: Mo 25. Aug 2003, 19:17
Aufgrund der vielen Fragen zur Artikelliste hier mal eine korrigierte Version mit Anmerkungen...
Grundlage ist der Code des Beispiel-Mandanten (der übrigens etliche Fehler enthält). Das Modul bei contenido-module.de sieht ähnlich aus, enthält aber mehr Funktionen. Angegeben ist der Output/Ausgabebereich-Code:
Im Gegensatz zum Kommentar im Beispiel-Mandanten werden alle Artikel angezeigt, inkl. Startartikel.
Wer das nicht möchte, muss die erste Abfrage in
ändern (CATART.is_start = '0').
Natürlich geht es auch kürzer:
Viel Erfolg.
HerrB
Grundlage ist der Code des Beispiel-Mandanten (der übrigens etliche Fehler enthält). Das Modul bei contenido-module.de sieht ähnlich aus, enthält aber mehr Funktionen. Angegeben ist der Output/Ausgabebereich-Code:
Code: Alles auswählen
<?php
$selcat = "CMS_VALUE[0]"; // selected category
if($selcat!="0" && $selcat!=""){
// select all articles in category
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".
$cfg["tab"]["art_lang"]." AS ARTLANG ".
"WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ".
"ARTLANG.online = '1' ORDER BY CATART.idart DESC";
// execute query
$db->query($query);
unset($articleID);
unset($linkID);
// get id's of sub articles
while ($db->next_record()) {
$articleID[] = $db->f("idartlang");
$linkID[] = $db->f("idart");
} // end while
// Table header
echo '
<table width="165" border="0" cellspacing="0" cellpadding="0">
<tr><td height="30" colspan="2" ></td></tr>
<tr><td height="21" width="22" style="border: 0px; border-top:1px; border-bottom:1px; border-color: #F7C473; border-style: solid; background-color: #FCF2D5"><img src="images/wuerfel.gif" width="22" height="21" border="0"></td>
<td width="143" style="border: 1px; border-left:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px" class="punkte">CMS_VALUE[2]</td></tr>';
// Loop through articles
if (is_array($articleID)) {
foreach ($articleID as $key => $value) {
// select all CMS variables of the article
$sql = "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '1' AND typeid = '1'";
$db->query($sql);
$db->next_record();
$headline = urldecode($db->f("value"));
if (strlen($headline) > CMS_VALUE[3]) {
$headline = substr($headline, 0, CMS_VALUE[3]);
$headline .= '..';
}
// link
$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID[$key]&m=$m&s=$s");
echo '<tr><td colspan="2" class="text" height="22" style="border: 1px; border-top:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px"><a href="'.$link.'">'.$headline.'</a></td></tr>';
} // end while
unset($headline);
} // end foreach
} // end if (is_array)
echo '</table><br>';
?>
Wer das nicht möchte, muss die erste Abfrage in
Code: Alles auswählen
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".
$cfg["tab"]["art_lang"]." AS ARTLANG ".
"WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND CATART.is_start = '0' AND ".
"ARTLANG.online = '1' ORDER BY CATART.idart DESC";
Natürlich geht es auch kürzer:
Code: Alles auswählen
<?php
$selcat = "CMS_VALUE[0]"; // selected category
if($selcat!="0" && $selcat!=""){
// select all articles in category without start article
$query = "SELECT CONTENT.value AS headline, ARTLANG.idart AS id FROM ".
$cfg["tab"]["cat_art"]." AS CATART, ".
$cfg["tab"]["art_lang"]." AS ARTLANG, ".
$cfg["tab"]["content"]." AS CONTENT ".
"WHERE CATART.idcat = '$selcat' AND CATART.is_start = '0' ".
"AND CONTENT.idartlang = ARTLANG.idartlang AND CONTENT.idtype = '1' AND CONTENT.typeid = '1' ".
"AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' ".
"AND ARTLANG.online = '1' ORDER BY CATART.idart DESC";
// execute query
$db->query($query);
if ($db->num_rows() > 0) {
// Table header
echo '<table width="165" border="0" cellspacing="0" cellpadding="0">';
echo '<tr><td height="30" colspan="2" ></td></tr>';
echo '<tr><td height="21" width="22" style="border: 0px; border-top:1px; border-bottom:1px; border-color: #F7C473; border-style: solid; background-color: #FCF2D5"><img src="images/wuerfel.gif" width="22" height="21" border="0"></td>';
echo '<td width="143" style="border: 1px; border-left:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px" class="punkte">CMS_VALUE[2]</td></tr>';
while ($db->next_record()) {
$headline = urldecode($db->f("headline"));
if (strlen($headline) > CMS_VALUE[3]) {
$headline = substr($headline, 0, CMS_VALUE[3]);
$headline .= '..';
}
// link
$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=".$db->f("id")."&m=$m&s=$s");
echo '<tr><td colspan="2" class="text" height="22" style="border: 1px; border-top:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px"><a href="'.$link.'">'.$headline.'</a></td></tr>';
}
unset($headline);
echo '</table><br>';
} // end while
} // end if
?>
HerrB