ich verwende für eine 3 Navigationsebene oder sagen wir mal Artikelnavigation eine Modifizierte Newsliste.
Habe das auch so abgeändert, das mit der aktive Artikel anders dargestellt wird.
Da ich sie aber in jedem Template eingebaut habe, habe ich nur den Output und da die Einstellungen gemacht.
Jetzt fehlt mir aber noch eine kleine Funktion und zwar wenn in der jeweiligen Kategorie nur ein Artikel ist,
dann sollte es keine Newsliste ausgeben, also erst ab 2 und mehr....
Kann mir da vielleicht jemand schnell helfen.
Der Code ist und angehängt.
Vielen Dank
Sascha
Code: Alles auswählen
<?php
class articleList {
/**
* Konstruktor der Klasse.
* @param Integer Primärschlüssel der Artikelkategorie.
*/
function articleList($myIdCat) {
global $client, $lang, $idcat;
$this->myIdCat = $idcat;
$this->client = $client;
$this->lang = $lang;
$this->idcat = $idcat;
$this->db = new DB_Contenido();
}
/**
* Setzt den vor der Artikelliste auszugebenden HTML-Code.
* @param String HTML-Code, der vor der Artikelliste ausgegeben werden
* soll.
*/
function setBefore($before) {
$this->before = $before;
}
/**
* Setzt den nach der Artikelliste auszugebenden HTML-Code.
* @param String HTML-Code, der nach der Artikelliste ausgegeben werden
* soll.
*/
function setAfter($after) {
$this->after = $after;
}
/**
* Setzt das Template (respektive die Maske) für die Ausgabe eines Teasers.
* Für die Ausgabe wird der Titel sowie die Artikelbeschreibung verwendet.
* @param String Template für die Asugabe des Teasers. Folgende Platzhalter
* sind vorgesehen {title} für den Titel, {teaser} für die
* Artikelbeschreibung, {idcat} für die Artikelkategorie sowie {idart} für
* die Artikelidentifikation, {link} für die Artikelreferenzierung und
* {created} für das Erstellungsdatum.
*/
function setTeaserMask($mask) {
$this->mask = $mask;
}
/**
* Gibt die Artikelliste zurück. Die Ausgabe an den Browser muss dann über
* ein echo oder ein print erfolgen.
* @param String Sortierkriterium. Zur Auswahl stehen: 'created'
* (Erstellungsdatum), 'modified' (Aktualisierungsdatum), 'sorted'
* (Contenido-Sortierkriterium), 'alphabetical' (alphabetisch nach Titel).
* @param Boolean True für aufsteigende Sortierung, false für absteigend.
* @param Integer Maximale Anzahl Artikel, die angezeigt werden sollen.
* Wird 0 angegeben, werden alle Artikel ausgegeben.
*/
function getArticleList($sortOrder, $asc, $maxArticles = 0) {
/*
* Ordnungsprinzip fest legen
*/
$order = ($asc) ? ('ASC') : ('DESC');
/*
* Sortierkriterium fest legen
*/
switch ($sortOrder) {
case 'created':
$sortCriteria = 'b.created '.$order;
break;
case 'modified':
$sortCriteria = 'b.lastmodified '.$order;
break;
case 'sorted':
$sortCriteria = 'b.artsort '.$order.', b.title '.$order;
break;
case 'alphabetical':
$sortCriteria = 'b.title '.$order;
break;
default:
$sortCriteria = 'b.title '.$order;
}
/*
* Artikel aus der Datenbank lesen
*/
$articles = $this->getArticles($this->myIdCat, $this->lang, $sortCriteria, $maxArticles);
/*
* Rückgabewert initialisieren
*/
$returnValue = '';
if (!empty($articles)) {
$returnValue = $this->before;
foreach ($articles as $article) {
if ($article['online'] == 1) {
$mask = $this->mask;
if ($article['redirect'] != '0') {
$article['link'] = $article['redirect'];
}
foreach ($article as $part => $content) {
$mask = str_replace('{'.$part.'}',$content,$mask);
}
$returnValue .= $mask;
}
}
$returnValue .= $this->after;
}
return $returnValue;
}
function getArticles($idcat, $idlang, $sortCriteria, $limit) {
global $cfg;
/*
* Initialisierung des Rückgabewertes
*/
$returnValue = array();
/*
* Setzen der Abfragelimiten
*/
if ($limit != 0) {
$limit = "LIMIT 0, $limit";
} else {
$limit = '';
}
/*
* Absetzen des Queries.
*/
$this->db->query("" .
"SELECT " .
" b.idart, " .
" b.title, " .
" b.summary, " .
" b.created, " .
" b.lastmodified, " .
" b.artsort, " .
" b.redirect_url, " .
" b.online, " .
" DATE_FORMAT(b.created, '%d.%m.%y') as erstellungsdatum, " .
" DATE_FORMAT(b.lastmodified, '%d.%m.%y') as aktualisierungsdatum " .
"FROM {$cfg['tab']['cat_art']} as a " .
"LEFT JOIN {$cfg['tab']['art_lang']} as b ON a.idart = b.idart " .
"LEFT JOIN {$cfg['tab']['cat_lang']} as c ON a.idcat = c.idcat " .
"WHERE " .
" a.idcat = $idcat " .
" AND b.idlang = {$this->lang} " .
"ORDER BY " .
" $sortCriteria " .
"$limit" .
"");
global $idart; // get current idart
while ($this->db->next_record()) {
$returnValue[] = array(
'teasertitle'=>$this->db->f('title'),
'teaser'=>$this->db->f('summary'),
'idcat'=>$idcat,
'idart'=>$this->db->f('idart'),
'link'=>'front_content.php?idcat='.$idcat.'&idart='.$this->db->f('idart'),
'redirect'=>$this->db->f('redirect_url'),
'online'=>$this->db->f('online'),
'klasse'=> (($idart == $this->db->f('idart')) ? "on" : "off"),
'created'=>$this->db->f('erstellungsdatum'));
}
return $returnValue;
}
}
$articleList = new articleList("CMS_VALUE[1]");
$articleList->setBefore('');
$articleList->setAfter('');
$articleList->setTeaserMask('
<a href="{link}" class="{klasse}">{teasertitle}</a><br>
');
if ($articles == 0) {
echo $articleList->getArticleList('sorted', true);}
echo "<br><br>";
?>