du brauchst ZWEI Navigationsmodule ... bzw eines das du konfigurieren kannst und in Zwei Container mit unterschiedlichen Konfigurationen einbaust.
+---------------------------------------+
+ Titelgrafik +
+---------------------------------------+
+ Naviggationsmodul 1 +
+---------------------------------------+
+ Navigationsmodul 2 +
+ ---------------------------------- ----+
+ CONTENT +
+ bzw. weitere elemente +
+----------------------------------------+
So in diese Richtung sieht ja die Struktur der Page aus die du haben möchtest.
Navigationsmodul 1:
Diese Modul liestet entweder Kategoriestammbäume auf oder halt nur die erste ebene der Unterkategorieren zu einer ausgewählten Kategorie.
Navigationmodul 2:
Listet die Unterkategorieren einer gewählten Kategorie aus oder die einzelnen Artikel einer gewählten Kategorie.
Du erstellst also ein Layout in dem du die CMS_CONTAINER[x] definierst.
Als nächstes ein Layout, mit dem du die einzelnen Container mit den entsprechenden Modulen belegst ( Headline, Text, Nav1, Nav2 usw. ).
Module, die für Navi1 und Navi2 nehmen kannst gibt es sowohl im Contenidobeispiel bzw. im Forum hier und im Downloadbereich.
Hier mal ein Modu, das du auch sowohl für Navi1 und auch Navi 2 nehmen kannst:
Modul - Input
Code: Alles auswählen
/***********************************************
* INPUT
************************************************/
// selected category
$selected = "CMS_VALUE[0]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr valign=\"top\">
<td>Kategorie wählen:</td>
<td>
<select name=\"CMS_VAR[0]\">";
if($selected!="0" && $selected!=""){
echo"<option value=\"0\">--- kein ---</option>";
}else{
echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}
// fetch all categorys
$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";
// execute query
$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
$spaces .= ">";
if ($selected == $db->f("idcat")) {
// selected category
echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} else {
// category
echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} // end if
} // end while
echo " </select>";
echo " </td>
</tr>
</table>";
Modul Output
Code: Alles auswählen
<?php
/***********************************************
* OUTPUT
************************************************/
include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");
// ****************************************************************************************************
// SECURITY-CHECKS
// ****************************************************************************************************
// SQL-Injection Überprüfungen und Work-Arounds
// lokale Variabeln initialisieren um Injections zu unterbinden
$db2 = "";
$catStart = "";
$sTmpStr = "";
$db2_sql = "";
$catIds = "";
$key = "";
$val = "";
$sql = "";
// ****************************************************************************************************
// erstelle eine zweite DB-Klasseninstanz, da wir hier
// mit zwei Abfragen udn Resultsets arbeiten müssen
$db2 = new DB_Contenido;
// Hole aus der Artikeldefinition die Ausgewählte Navigationsebene
$catStart = "CMS_VALUE[0]";
if ($catStart != "") {
$sTmpStr = "";
// Ermittlung aller Kategorie IDs der ausgesuchten
// Navigationsebene und speicherug in einem Array
// $catIds = conDeeperCategoriesArray($catStart);
$db2_sql = " SELECT
*
FROM ". $cfg["tab"]["cat"] ." AS A
WHERE
A.parentid = ". $catStart;
// Abfrage ausführen
$db2->query($db2_sql);
// Ermittlung aller Kategorie IDs der ausgesuchten
// Navigationsebene und speicherug in einem Array
while ( $db2->next_record() ) {
$catIds[] = $db2->f("idcat");
}
// Überprüfung ob $catIds wirklich ein Array ist
if ( is_array($catIds) ) {
// die einzelnen IDs durchgegen
foreach($catIds as $key=>$val) {
// Ersten Eintrag überspringen, da es sich dabei umd
// den Menupunkt selbst handelt und dieser nicht
// Angezeigt werden soll.
if ($key != 0) {
// Datenbankabfrage ( SQL QUERY ) aufbauen
$sql = "SELECT
CAT.idcat AS idcat,
name
FROM
".$cfg["tab"]["cat"]." AS CAT,
".$cfg["tab"]["cat_lang"]." AS CATLANG
WHERE CAT.idcat = ".$val."
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '$lang'
AND CATLANG.visible = '1'";
// Datenbankabfrage durchführen
$db->query($sql);
// die einzelnen Recordsets der Datenbankabfrage durchgehen
while ( $db->next_record() ) {
// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
if ( strlen($sTmpStr) == 0 ) {
// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
// und den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . '[<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>]';
}
else
{
// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
// den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . ' - [<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>]';
} // end if
} // end while
} // if
} // end foreach
// Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
echo ' ' . $sTmpStr;
} // end if (is_array)
}
?>
Setze also in deiner Template definition dieses Modul sowohl in den Container für Navi1 und Navi2 ein.
Deine Kategoriestruktur sollte dann ca in diese richtung aussehen
HAUPTNAVIGATION
+----+ NAVI 1 - Punkt 1
| +-------+ NAVI2 - Punkt 1.1
| +-------+ NAVI2 - Punkt 1.2
+----+ NAVI 1 - Punkt 2
+-------+ NAVI2 - Punkt 2.1
+-------+ NAVI2 - Punkt 2.2
wobei HAUPTNAVIGATION der Kategoriebaum darstellt;
NAVI 1 - PUNKT 1 und NAVI 1 - PUNKT 2 sind Unterkategorien im "HAUPTNAVIGATION"-Kategorienbaum.
Punkt 1.1 und Punkt 1.2 sind wiederum Unterkategorien zu Punkt 1.
Punkt 2.1 und Punkt 2.2 sind wiederum Unterkategorien zu Punkt 2.
Du legst für diese Kategorien das Template fest, das du mit den Navigationsmodulen definiert hast. in der Entsprechenden Templatekonfiguration zur Kategorie legst du dann für die Kategorie
NAVI1 - Punkt 1
fest, das Navi1 als Startkategorie HAUPTNAVIGATION nimmt, und Navi2 als Startkategorei PUNKT 1 nimmt.
Ebenso bei Punkt 1.1 und 1.2.
Bei NAVI1 - PUNKT 2
wählst du für Navi1 als Startkategorie auch HAUPTNAVIGATION und für Navi2 dann PUNKT 2 als Startkategorie aus.
Ebenso für Punkt 2.1 und 2.2.
HAUPTNAVIGATION
Entweder du nimmst hier ein Template ( ein zweites ) das den NAVI 2 Modul Container nicht enthält und stellst dann in der Kategorietemplatekonfiguration für NAVI1 wiederum HAUPTNAVIGATION als Startkategorie ein.
Wenn du das selbe Template verwendest wie bei den oberen beschrieben konfiguriest du die HAUPTNAVIGATION Templatekonfiguration für NAVI1 auf HAUPTNAVIGATION und Navi2 läßt du auf "-- KEIN --" stehen bzw. stellst dies ein.
Zusätzlich solltest du den Modulcode durchgehen da dieser nur reine a hrefs definiert und dafür eine css klasse verwendet.
Müsstest dann halt den modulcode anpassen bzw ihn für beide navi level utnerschiedlich gestalten wenn du beide mit unterschiedlichen anzeigen bzw grafiken als hintergründe verwenden willst.
Funktional ist das gepostete Modul aber das was du brauchst.
Gruß
Stefan
P.S.: Der Modulcode ist der aus der Beispielseite, nur bissle angepasst ... hab die Datei mit der Headerinformation leider grad ned gefunden.