Ich habe den Code mal ausgedünnt, sieht nun so aus:
Code: Alles auswählen
<?php
# Konfiguration
$kategorie = "CMS_VALUE[0]";
$angezeigte_anzahl = "CMS_VALUE[1]";
if( $angezeigte_anzahl == "" ) {
$angezeigte_anzahl = 10;
}
$startartikel = "CMS_VALUE[2]";
if( $startartikel == "" ) {
$startartikel = false;
}
$subheadline = "CMS_VALUE[3]";
if( $subheadline == "" ) {
$subheadline = 200;
}
$navigationslink['previous'] = "CMS_VALUE[4]";
if( $navigationslink['previous'] == "" ) {
$navigationslink['previous'] = "zurück";
}
$navigationslink['next'] = "CMS_VALUE[5]";
if( $navigationslink['next'] == "" ) {
$navigationslink['next'] = "vor";
}
# $ebene = "CMS_VALUE[6]";
$limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0);
$db = new DB_Contenido;
$db2 = new DB_Contenido;
# Wenn Startartikel true ist, werden die Startartikel dargestellt, sonst nicht.
if( $startartikel ) {
$nur_startartikel = "";
} else {
$nur_startartikel = "AND d.is_start = 0";
}
# Liest die Anzahl betroffener Artikel aus der Datenbank
$sql_1 = "SELECT
count(*) AS anzahl
FROM
{$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN
{$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat
LEFT JOIN
{$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
WHERE
(
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $kategorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
$nur_startartikel
";
$sql_2 = "SELECT
c.idcat,
d.idart,
e.idartlang,
e.created,
DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
FROM
{$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN
{$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
LEFT JOIN
{$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
WHERE
(
(
c.idcat = b.idcat
AND b.parentid = a.idcat
) OR (
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $kategorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
ORDER BY
e.created DESC
LIMIT
$limit, $angezeigte_anzahl
";
$db->query($sql_1);
$db->next_record();
$anzahl_artikel = $db->f("anzahl");
$db->query($sql_2);
echo '<table cellpadding="0" cellspacing="0" style="width:100%">';
while( $db->next_record() ) {
$sql = "SELECT
value
FROM
{$cfg['tab']['content']}
WHERE
idartlang = ".$db->f("idartlang")."
AND idtype = 3
ORDER BY
typeid ASC
";
$db2->query($sql);
$db2->next_record();
$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart"));
echo "<tr><td class=\"artlist_headline\"> <a href=\"$link\" class=\"artlist_headlinelink\">".urldecode($db2->f("value"))."</a> </td>";
echo "<td class=\"artlist_date\">".$db->f("erstellungsdatum")."</td></tr>";
$db2->next_record();
// die subheadline auf die gewünschte länge reduzieren (trennung nur
// nach bzw. vor einem ganzen wort
if( strlen($db2->f("value")) > $subheadline ) {
$newsubheadline = '';
$worte = explode (" ",strip_tags(urldecode($db2->f("value"))));
$zulang = false;
foreach ($worte as $wort) {
if (strlen($newsubheadline." ".$wort) >= $subheadline) $zulang = true;
$newsubheadline = (!$zulang)?($newsubheadline." ".$wort):($newsubheadline);
}
$newsubheadline .= "...";
} else {
$newsubheadline = strip_tags(urldecode($db2->f("value")));
}
echo "<tr><td class=\"artlist_subheadline\" colspan=\"2\">$newsubheadline</td></tr>";
echo "<tr><td>$link</td></tr>";
}
echo '</table>';
?>
Es sollte diese Liste sein, da zum einen wichtig ist, dass es mehrere Ebenen tief ausliest und es soll
nicht die Advanced sein.
Eigentlich ist dies ja eine einfache Liste, ich will doch nur die Startartikel nicht dabeihaben? Ich bekomme einfach nicht das in die Abfrage was fehlt, ich bin am verzweifeln.
