ich nutze eine Sitemap als DropDown-Menü. Das klappt auch wunderbar. Allerdings klickt der Benutzer ja oft nur auf den letzten Menüpunkt eines Klap-Auf-Menüs und selten auf ein obergeordneten Punkt, deswegn kann man diese oft leer lassen, aber was ist wenn doch jemand raufklickt! Zur Zeit löse ich das mit einen leeren Artikel mit einer Weiterleitung zur nächsten gewünschten Kategorie.
z.B. So stelle ich mir das vor:
Punkt 1
Punkt 2
Punkt 3
Punkt 4 -------------> Hier ist kein Artikel hinterlegt und somit soll der Startartikel der "Punkt 4.1" aufgerufen werden, da hier der erste Startartikel drin ist von einer der untegordneten Kategorien!
Punkt 4.1
Punkt 4.2
Punkt 4.3
Punkt 5
Ist es möglich das man sagen kann, wenn in dem Menüpunkt kein Artikel angelegt ist (sondern nur eine Kategorie), dann rufe aus der ersten untergordneten Kategorie die ein Startartikel hat, diesen Startartikel auf?
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : vpSitemap 0.4
* Author : Ingo van Peeren
* Copyright : Ingo van Peeren (ingo@van-peeren.de)
* Created : 2005-01-14
* Modified : 2006-09-07
* Credits : Nik Wyss & juergen@sotonic.de
************************************************/
// Includes
cInclude("frontend", "includes/functions.navigation.php");
// CMS_VALUES initialisieren
$anzahlEbenen = "5";
$startkategorie = "1";
$ebeneNullAnzeigen = "2";
function vpSitemap($kategorie=0, $level)
{
global $lang, $client, $cfg, $startkategorie, $anzahlEbenen, $ebeneNullAnzeigen;
$db = new DB_Contenido;
$sql = "SELECT
*
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat=B.idcat
AND B.idcat=C.idcat
AND C.idlang='$lang'
AND B.idclient='$client'
AND B.parentid=$kategorie
AND level <= $anzahlEbenen
AND C.visible=1
ORDER by A.idtree";
$db->query($sql);
$treffer = $db->num_rows();
if ($treffer) {
if ($kategorie == $startkategorie) $result .= "\n" . str_repeat (" ", ($level * 4)) . "<ul class=\"dropdown\">\n";
else $result .= "\n" . str_repeat (" ", ($level * 4) + 4) . "<ul class=\"roundbordermenue\">\n";
}
while ($db->next_record())
{
$visible = checkCatPermission($db->f("idcatlang"),$db->f("public"));
if ($visible) {
$lvl = $db->f("level");
$result .= str_repeat (" ", ($lvl * 4) + 2);
if ($lvl == 1) {
$result .= '<li class="id'.$db->f("idcat").' ebene'.$lvl.'"><a href="front_content.php?idcat='.$db->f("idcat").'&lang='.$lang.'&client='.$client.'">' . $db->f("name") . '</a>' . vpSitemap($db->f("idcat"), $lvl) . "</li>\n";
}
else if ($lvl > 1) {
$result .= '<li><a href="front_content.php?idcat='.$db->f("idcat").'&lang='.$lang.'&client='.$client.'">'. $db->f("name") . '</a>' . vpSitemap($db->f("idcat"), $lvl) . "</li>\n";
}
else {
$result .= "<li> ".vpSitemap($db->f("idcat"), $lvl) . "</li>\n";
}
}
}
if ($treffer) {
if ($kategorie == $startkategorie) $result .= str_repeat (" ", ($level * 4));
else $result .= str_repeat (" ", ($level * 4) + 4);
$result .= "</ul>\n";
$result .= str_repeat (" ", ($level * 4) + 2);
}
return($result);
}
$sql = "SELECT
level
FROM
".$cfg["tab"]["cat_tree"]."
WHERE
idcat=$startkategorie";
$db->query($sql);
$db->next_record();
$startEbene = $db->f("level") + 1;
$anzahlEbenen += $startEbene;
if ($startkategorie==0) {
if ($ebeneNullAnzeigen) $anzahlEbenen--;
$startEbene--;
}
echo "<div id=\"menue\">";
echo vpSitemap($startkategorie, $startEbene);
echo "</div>";
?>
Vielen Dank
MfG Steffen