Neues Modul: vpSitemap
Verfasst: Mo 11. Jul 2005, 10:56
Ich habe mich mal kurzerhand (weil es auch Anfragen in der Art gab) daran gesetzt und ein von mir schon seit einiger Zeit eingesetztes Modul soweit geändert, dass ich das hier auch mal veröffentlichen kann.
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:
und dem Output:
2. In den Templates, wo das Modul verwendet werden soll, muss es bei dem entsprechenden Container angegeben werden.
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
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