vpSitemap erstellt eine verschachtelte ungeordnete Liste, die mit etwas Geschick in CSS in jede Form gebracht werden kann.
Die Einbindung in Contenido ist denkbar einfach:
1. Neues Modul erstellen mit dem Input:
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : vpSitemap 0.1
* Author : Ingo van Peeren
* Copyright : Ingo van Peeren (ingo@van-peeren.de)
* Created : 14-01-2005
* Modified : 11-07-2005
* Credits : Nik Wyss & juergen@sotonic.de
************************************************/
$selected = "CMS_VALUE[0]";
?>
<table cellspacing="0" cellpadding="10" border="0">
<tr valign="top">
<td>Kategorie wählen:</td>
<td><? echo "<select name=\"CMS_VAR[0]\">";?>
<option value="0">---Alle---</option>
<?
// alle Kategorien auslesen
$query = "SELECT
A.idcat,
A.level,
C.name
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 C.visible=1
ORDER BY A.idtree";
// Query ausführen
$db->query($query);
// loop result and build the options
while ($db->next_record()) {
// indent spacer
$spaces = "";
// how many levels
$levels = $db->f("level");
for ($i = 0; $i > $levels; $i ++) {
// add 2 spaces for every level
$spaces = $spaces . " ";
} // end for
echo "<option";
if ($selected == $db->f("idcat")) echo " selected=\"selected\"";
echo " value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} // end while
?>
</select>
</td>
</tr>
<tr>
<td>Anzahl Ebenen:</td>
<td><input type="text" name="<? echo "CMS_VAR[1]"; ?>" value="<? echo "CMS_VALUE[1]"; ?>"></td>
</tr>
<tr>
<td>Ebene "0" anzeigen:</td>
<?php
echo "<td><INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"1\"";
if ("CMS_VALUE[2]" == "1") {
echo "checked=checked";
}
echo "> ja
<input type=\"radio\" name=\"CMS_VAR[2]\" value=\"0\"";
if ("CMS_VALUE[2]" == "0") {
echo "checked=checked";
}
echo "> nein </td></tr>";
echo " </table>";
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : vpSitemap 0.1
* Author : Ingo van Peeren
* Copyright : Ingo van Peeren (ingo@van-peeren.de)
* Created : 14-01-2005
* Modified : 11-07-2005
* Credits : Nik Wyss & juergen@sotonic.de
************************************************/
// CMS_VALUES initialisieren
$anzahlEbenen = "CMS_VALUE[1]";
$startkategorie = "CMS_VALUE[0]";
$ebeneNullAnzeigen = "CMS_VALUE[2]";
function vpSitemap($kategorie=0)
{
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 .= "<ul id=\"sitemap\">\n";
else $result .= "<ul>\n";
}
while ($db->next_record())
{
$lvl = $db->f("level");
if (($lvl > 0) || ($ebeneNullAnzeigen)) $result.= "<li><a href='front_content.php?idcat=".$db->f("idcat")."&lang=$lang&client=$client' title='Ebene ".$lvl.": ".$db->f("name")."'>".$db->f("name")."</a>".vpSitemap($db->f("idcat"), $lvl)."</li>\n";
else $result.= "<li> ".vpSitemap($db->f("idcat"), $lvl)."</li>\n";
}
if ($treffer) $result .= "</ul>\n";
return($result);
}
$sql = "SELECT
level
FROM
".$cfg["tab"]["cat_tree"]."
WHERE
idcat=$startkategorie";
$db->query($sql);
$db->next_record();
$startEbene = $db->f("level");
$anzahlEbenen += $startEbene;
if (($startkategorie==0) && ($ebeneNullAnzeigen)) $anzahlEbenen--;
echo vpSitemap($startkategorie);
?>
3. In der verwendeten CSS-Datei die notwendigen CSS-Anweisungen anlegen. Die Liste der obersten Ebene hat die ID "sitemap". Damit sollte sich dann alles machen lassen.
Die jeweils aktuelle Version (inkl. Download und eine Demo) befindet sich unter:
http://www.contenido-tutorials.de/front ... p?idcat=65
Gruß und viel Spaß
Ingo