Hauptnavigation (bis 4st, css) mit 1-4 fixen Ebenen
Hauptnavigation (bis 4st, css) mit 1-4 fixen Ebenen
Hallo,
biete mal als meinen Beitrag eine überarbeitete und erweiterte 4-stufige Hauptnavigation mit CSS-Formatierung an, bei der man 1 bis 4 Ebenen fest anzeigen lassen kann, den Rest dynamisch wie gewohnt.
Input und Output sind unter dem folgenden Link downloadbar:
http://santmat.info/modules/
Ein kleiner Hinweis zur Einstellung der Anzahl der Ebenen in der Vorkonfiguration. Die sollten natürlich in allen Kategorien, etc. auf die gleiche Anzahl eingestellt sein. Eventuell vielleicht doch im Outputmodul per PHP-Zuweisung fix einstellen ($navlevel=1..4).
Hoffe, dies nützt so manchem von euch und danke an die Contenido-Entwickler und die zur Verfügung gestellten Module der Contenido-Forumsmitglieder.
Grüsse,
Christian.
biete mal als meinen Beitrag eine überarbeitete und erweiterte 4-stufige Hauptnavigation mit CSS-Formatierung an, bei der man 1 bis 4 Ebenen fest anzeigen lassen kann, den Rest dynamisch wie gewohnt.
Input und Output sind unter dem folgenden Link downloadbar:
http://santmat.info/modules/
Ein kleiner Hinweis zur Einstellung der Anzahl der Ebenen in der Vorkonfiguration. Die sollten natürlich in allen Kategorien, etc. auf die gleiche Anzahl eingestellt sein. Eventuell vielleicht doch im Outputmodul per PHP-Zuweisung fix einstellen ($navlevel=1..4).
Hoffe, dies nützt so manchem von euch und danke an die Contenido-Entwickler und die zur Verfügung gestellten Module der Contenido-Forumsmitglieder.
Grüsse,
Christian.
-
- Beiträge: 1082
- Registriert: Di 22. Jul 2003, 10:14
- Wohnort: Hessen
- Kontaktdaten:
Hallo Christian,
ein tolles Modul, ergibt viele Möglichkeiten.
Was hällst du davon, die Template Dateien komplett wegzulassen und nur noch List Elemente <li> mit einer class auszugeben. Dann könntest du alles komplett im CSS formatieren! Die Änderungen dazu sind minimal.
Schau dir mal den Quellcode der Seiten von www.sankt-himi.de an, dort kannst du so etwas sehen. (Modul stammt von www.x28.de)
Vielen Dank für dieses Modul
Florian
ein tolles Modul, ergibt viele Möglichkeiten.
Was hällst du davon, die Template Dateien komplett wegzulassen und nur noch List Elemente <li> mit einer class auszugeben. Dann könntest du alles komplett im CSS formatieren! Die Änderungen dazu sind minimal.
Schau dir mal den Quellcode der Seiten von www.sankt-himi.de an, dort kannst du so etwas sehen. (Modul stammt von www.x28.de)
Vielen Dank für dieses Modul
Florian
Hallo OA,
hatte für meine Zwecke die Links aus navfirst_on.html und navfirst_off.html ausgebaut, da ich die erste Ebene als Titel für je eine Gruppe von Navigationslinks der zweiten Stufe verwende.
Ändere navfirst_on.html / navfirst_off.html gemäß navsecond_on/off.html (<a> tags einbauen), dann hast du auch in der ersten Ebene wieder Links.
Gruss,
Christian.
hatte für meine Zwecke die Links aus navfirst_on.html und navfirst_off.html ausgebaut, da ich die erste Ebene als Titel für je eine Gruppe von Navigationslinks der zweiten Stufe verwende.
Ändere navfirst_on.html / navfirst_off.html gemäß navsecond_on/off.html (<a> tags einbauen), dann hast du auch in der ersten Ebene wieder Links.
Gruss,
Christian.
Re: Hauptnavigation (bis 4st, css) mit 1-4 fixen Ebenen
tausend Dank! ... Du hast mir gerade seeeehr viel Arbeit erspart.chrism hat geschrieben:biete mal als meinen Beitrag eine überarbeitete und erweiterte 4-stufige Hauptnavigation mit CSS-Formatierung an, bei der man 1 bis 4 Ebenen fest anzeigen lassen kann, den Rest dynamisch wie gewohnt....
Eingebaut und ein wenig modifiziert (layout-technisch) und funktioniert wie gewünscht.
Mfg. hes
Re: Hauptnavigation mit 1-4 fixen Ebenen - ausblenden?
Super Modul erstmal, viiielen Dank! Ich habe jetzt allerdings noch ein klitzekleines Problem damit, kannst Du mir da vielleicht noch weiterhelfen?
Ich habe mit Deinem Modul ein horizontales Menü gebastelt, wo die Unterpunkte erst beim Mouseovern aufklappen (mit CSS umgesetzt). Nun ist es so, daß ich in der dritten Ebene nicht immer Inhalte stehen habe, meine CSS-Formatierung aber einen weißen Rand von einem Pixel hat. Das bedeutet:
Wenn ich in der zweiten Navigationsebene mit der Maus über einen Menüpunkt fahre klappt immer die dritte Navigationsebene auf, wohl bedingt durch diesen Code in Deinem Modul:
Da aber dieses "<ul>" einen weißen Rahmen hat sehe ich bei fehlenden Inhalten in der dritten auklappenden Ebene dann immer einen breiten weißen Streifen, generiert aus dem entstehenden "<ul></ul>".
Gibt es eine Möglichkeit noch eine weitere Abfrage einzubauen, damit die Ebene nicht einfach nur bei passendem navlevel eingeblendet wird, sondern bei fehlendem Startartikel in dieser Kategorie wiederum ausgeblendet wird?
Also zum Beispiel
wenn ich fit in PHP wäre wüßte ich bestimmt wie das geht - da ich aber eine PHP-Lusche bin, könntest Du mir da vielleicht weiterhelfen?
Das wäre super.
DANKE!
Ich habe mit Deinem Modul ein horizontales Menü gebastelt, wo die Unterpunkte erst beim Mouseovern aufklappen (mit CSS umgesetzt). Nun ist es so, daß ich in der dritten Ebene nicht immer Inhalte stehen habe, meine CSS-Formatierung aber einen weißen Rand von einem Pixel hat. Das bedeutet:
Wenn ich in der zweiten Navigationsebene mit der Maus über einen Menüpunkt fahre klappt immer die dritte Navigationsebene auf, wohl bedingt durch diesen Code in Deinem Modul:
Code: Alles auswählen
if (is_array($data['sub'])) {
echo '<ul>';
foreach ($data['sub'] as $key => $data) {
/* 3. Navigations Ebene */
Gibt es eine Möglichkeit noch eine weitere Abfrage einzubauen, damit die Ebene nicht einfach nur bei passendem navlevel eingeblendet wird, sondern bei fehlendem Startartikel in dieser Kategorie wiederum ausgeblendet wird?
Also zum Beispiel
Code: Alles auswählen
if (is_array($data['sub']) and STARTARTIKEL == 1) { usw
Das wäre super.
DANKE!
Super Modul, läuft auch sauber bei mir, ich habe es in 3 Teile zerlegt und in verschiedene Ecken der Webseite ausgegeben.
Aber habt ihr nicht das Problem, dass man nicht alle Unterebenen gleichzeitig aufklappen möchte, sondern nur die von der ausgewählten Kategorie.
Und mir ist noch aufgefallen, dass das on/off nur für die letzte ausgewählte Kategorie wirksam wird, die übergeordneten Kategorien gehen einfach wieder auf off, seltsam.
Aber habt ihr nicht das Problem, dass man nicht alle Unterebenen gleichzeitig aufklappen möchte, sondern nur die von der ausgewählten Kategorie.
Und mir ist noch aufgefallen, dass das on/off nur für die letzte ausgewählte Kategorie wirksam wird, die übergeordneten Kategorien gehen einfach wieder auf off, seltsam.
Habe den Code noch mal abgändert, sodass nichts aus den Templates geholt wird. Jetzt ist es eine reine Liste mit '<ul><li>'-Verschachtelungen. Denke, da nicht mehr auf die Templates zurückgegriffen wird, dass es ein wenig performanter sein sollte. Vielleicht kann es ja noch wer gebrauchen.. mfg Frank
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Navigation 1.2
* Author : Jan Lengowski
* Copyright : Contenido - four for business
* Created : 15-05-2003
* Modified : 04-2005, Christian Meilinger
* Modified : 06-2007, franky
************************************************/
if ( !is_object($db2) ) {
$db2 = new DB_Contenido;
}
/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
/**
* Array storing alle the
* navigation data
*/
$navitems = array();
/* Parrentid at static navtree to which dynamic navtree has to be connected */
$navitemsparentid = 0;
$navlevel = "CMS_VALUE[1]";
/**
* Check if a category is child
* of another category
*
* @return boolean true/false
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG 2003
*/
function catIsChildOf($id, $idparent) {
global $cfg, $client, $lang;
$db = new DB_Contenido;
$parent = $id;
while ( $parent != 0 ) {
$sql = "SELECT
a.parentid
FROM
".$cfg["tab"]["cat"]." AS a,
".$cfg["tab"]["cat_lang"]." AS b
WHERE
a.idclient = '".$client."' AND
b.idlang = '".$lang."' AND
a.idcat = b.idcat AND
a.idcat = '".$parent."'";
$db->query($sql);
$db->next_record();
$parent = $db->f("parentid");
if ($parent == $idparent) {
return true;
}
}
return false;
}
if ( catIsChildOf($idcat, 'CMS_VALUE[0]') ) {
$sel_idcat = $idcat;
} else {
$sel_idcat = 'CMS_VALUE[0]';
}
/* Get IDCat from first child for submenue */
$sql = "SELECT idcat FROM ".$cfg["tab"]["cat"]." WHERE parentid = '$sel_idcat'";
$db->query($sql);
$db->next_record();
if ($db->f("idcat") != 0) {
$sel_idcat = $db->f("idcat");
}
/**
* Recursive function for creating
* the dynamic part of the navigation array
* @param Int $idcat Category id
*/
function nav($idcat) {
global $navitems, $navitemsparentid, $navlevel, $client, $lang, $cfg;
$db = new DB_Contenido;
$db2 = new DB_Contenido;
$navi_temp = array();
/* If no parent or level below limit, end function */
$sql = "SELECT
B.parentid
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B
WHERE
A.idcat = B.idcat AND
B.idcat = '$idcat' AND
A.level > '$navlevel'";
$db->query($sql);
$db->next_record();
$parentid = $db->f("parentid");
if ( $parentid == 0 ) {
if ($navitems != array()) {
$navitemsparentid = $idcat;
} else {
$navitemsparentid = 0;
}
return true;
}
/* Navigationsitems der Brüder sammeln */
$sql = "SELECT
A.idcat,
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
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = '$parentid' AND
A.level > '$navlevel'
ORDER BY
A.idtree";
$db->query($sql);
while ($db->next_record()) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
b.is_start = '1' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
$db2->next_record();
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navi_temp[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
$navi_temp[$idcat]["sub"] = $navitems;
$navitems = $navi_temp;
/* Function call */
nav($parentid);
return true;
} // end function
/* Create dynamic part of Navigation Array */
nav($sel_idcat);
/**
* Recursive function for creating
* the fixed part of the navigation array
* @param Int $idcat Category id
*/
function navfixed($idcat) {
global $navlevel, $navitems, $navitemsparentid, $client, $lang, $cfg;
$db = new DB_Contenido;
$db2 = new DB_Contenido;
$navarray = array();
/* Collect navigationsitems of children */
$sql = "SELECT
A.idcat,
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
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = '$idcat' AND
A.level <= '$navlevel'
ORDER BY
A.idtree";
$db->query($sql);
while ($db->next_record()) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
b.is_start = '1' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
$db2->next_record();
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navarray[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target,
"sub" => array());
$navarray[$db->f("idcat")]["sub"] = navfixed($db->f("idcat"));
/* Connect dynamic part of nav with static part */
if ($db->f("idcat") == $navitemsparentid) {
$navarray[$db->f("idcat")]["sub"] = $navitems;
}
}
return $navarray;
} // end function
/* Create Navigation Array */
$navitems = navfixed('CMS_VALUE[0]');
/* Start Output buffer */
ob_start();
foreach ($navitems as $key => $data) {
echo '<ul>';
/* 1. Navigations Ebene */
if ($idcat == $data['idcat']) {
echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" id="'.$data['idcat'].'" target="'.$data['target'].'">'.$data['name'].'</a></li>';
} else {
echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" id="'.$data['idcat'].'" target="'.$data['target'].'">'.$data['name'].'</a></li>';
}
if (is_array($data['sub'])) {
echo '<ul>';
foreach ($data['sub'] as $key => $data) {
/* 2. Navigations Ebene */
if ($idcat == $data['idcat']) {
echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" id="'.$data['idcat'].'" target="'.$data['target'].'">'.$data['name'].'</a><li>';
} else {
echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" id="'.$data['idcat'].'" target="'.$data['target'].'">'.$data['name'].'</a></li>';
}
if (is_array($data['sub'])) {
echo '<ul>';
foreach ($data['sub'] as $key => $data) {
/* 3. Navigations Ebene */
if ($idcat == $data['idcat']) {
echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" target="'.$data['target'].'">'.$data['name'].'</a></li>';
} else {
echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" target="'.$data['target'].'">'.$data['name'].'</a></li>';
}
if (is_array($data['sub'])) {
echo '<ul>';
foreach ($data['sub'] as $key => $data) {
/* 4. Navigations Ebene */
if ($idcat == $data['idcat']) {
echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" target="'.$data['target'].'">'.$data['name'].'</a></li>';
} else {
echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" target="'.$data['target'].'">'.$data['name'].'</a></li>';
}
} // end foreach
echo '</ul>';
} // end if
} // end foreach
echo '</ul>';
} // end if
} // end foreach
echo '</ul>';
} // end if
echo '</ul>';
} // end foreach
/* Read out buffer */
$html = ob_get_contents();
/* Clean buffer */
ob_end_clean();
/* Output buffer-contents */
echo $html;
?>
-
- Beiträge: 199
- Registriert: Mo 31. Okt 2005, 15:26
- Wohnort: Hamburg
- Kontaktdaten:
Hier ist der Code für das Modul mit Templates:
Input:
Output:
Grüße,
Kashban
PS: Templates gibt's auf Anfrage
Input:
Code: Alles auswählen
/**
* Navigation
*
* INPUT
*
* @autor Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG 2003
* Modified : 04-2005, Christian Meilinger
*/
?>
<table cellspacing="0" cellpadding="10" border="0">
<tr>
<td class="text">Baum wählen:</td>
<td>
<select name="CMS_VAR[0]">
<option value="0">-- kein --</option>
<?php
$sql = "SELECT
A.idcat,
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 AND
A.level = '0'
ORDER BY
A.idtree";
$db->query($sql);
while ( $db->next_record() ) {
if ( "CMS_VALUE[0]" == $db->f("idcat") ) {
echo '<option selected="selected" value="'.$db->f("idcat").'">'.$db->f("name").'</option>';
} else {
echo '<option value="'.$db->f("idcat").'">'.$db->f("name").'</option>';
}
}
?>
</select>
</td>
</tr>
<tr>
<td class="text">Grössten immer sichtbar gehaltenen Level des Navigationsbaumes wählen:</td>
<td>
<select name="CMS_VAR[1]">
<?php
if ( "CMS_VALUE[1]" == "1" ) {
echo '<option selected="selected" value="1">1 (Dynamic Menu)</option>';
} else {
echo '<option value="1">1 (Dynamic Menu)</option>';
}
if ( "CMS_VALUE[1]" == "2" ) {
echo '<option selected="selected" value="2">2</option>';
} else {
echo '<option value="2">2</option>';
}
if ( "CMS_VALUE[1]" == "3" ) {
echo '<option selected="selected" value="3">3</option>';
} else {
echo '<option value="3">3</option>';
}
if ( "CMS_VALUE[1]" == "4" ) {
echo '<option selected="selected" value="4">4 (Static Menu)</option>';
} else {
echo '<option value="4">4 (Static Menu)</option>';
}
?>
</select>
</td>
</tr>
</table>
<?php
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Navigation 1.2
* Author : Jan Lengowski
* Copyright : Contenido - four for business
* Created : 15-05-2003
* Modified : 04-2005, Christian Meilinger
************************************************/
if ( !is_object($db2) ) {
$db2 = new DB_Contenido;
}
/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
/* Template Instance */
$tpl = new Template;
/**
* Array storing alle the
* navigation data
*/
$navitems = array();
/* Parrentid at static navtree to which dynamic navtree has to be connected */
$navitemsparentid = 0;
$navlevel = "CMS_VALUE[1]";
/**
* Check if a category is child
* of another category
*
* @return boolean true/false
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG 2003
*/
function catIsChildOf($id, $idparent) {
global $cfg, $client, $lang;
$db = new DB_Contenido;
$parent = $id;
while ( $parent != 0 ) {
$sql = "SELECT
a.parentid
FROM
".$cfg["tab"]["cat"]." AS a,
".$cfg["tab"]["cat_lang"]." AS b
WHERE
a.idclient = '".$client."' AND
b.idlang = '".$lang."' AND
a.idcat = b.idcat AND
a.idcat = '".$parent."'";
$db->query($sql);
$db->next_record();
$parent = $db->f("parentid");
if ($parent == $idparent) {
return true;
}
}
return false;
}
if ( catIsChildOf($idcat, 'CMS_VALUE[0]') ) {
$sel_idcat = $idcat;
} else {
$sel_idcat = 'CMS_VALUE[0]';
}
/* Get IDCat from first child for submenue */
$sql = "SELECT idcat FROM ".$cfg["tab"]["cat"]." WHERE parentid = '$sel_idcat'";
$db->query($sql);
$db->next_record();
if ($db->f("idcat") != 0) {
$sel_idcat = $db->f("idcat");
}
/**
* Recursive function for creating
* the dynamic part of the navigation array
* @param Int $idcat Category id
*/
function nav($idcat) {
global $navitems, $navitemsparentid, $navlevel, $client, $lang, $cfg;
$db = new DB_Contenido;
$db2 = new DB_Contenido;
$navi_temp = array();
/* If no parent or level below limit, end function */
$sql = "SELECT
B.parentid
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B
WHERE
A.idcat = B.idcat AND
B.idcat = '$idcat' AND
A.level > '$navlevel'";
$db->query($sql);
$db->next_record();
$parentid = $db->f("parentid");
if ( $parentid == 0 ) {
if ($navitems != array()) {
$navitemsparentid = $idcat;
} else {
$navitemsparentid = 0;
}
return true;
}
/* Navigationsitems der Brüder sammeln */
$sql = "SELECT
A.idcat,
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
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = '$parentid' AND
A.level > '$navlevel'
ORDER BY
A.idtree";
$db->query($sql);
while ($db->next_record()) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
b.is_start = '1' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
$db2->next_record();
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navi_temp[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
$navi_temp[$idcat]["sub"] = $navitems;
$navitems = $navi_temp;
/* Function call */
nav($parentid);
return true;
} // end function
/* Create dynamic part of Navigation Array */
nav($sel_idcat);
/**
* Recursive function for creating
* the fixed part of the navigation array
* @param Int $idcat Category id
*/
function navfixed($idcat) {
global $navlevel, $navitems, $navitemsparentid, $client, $lang, $cfg;
$db = new DB_Contenido;
$db2 = new DB_Contenido;
$navarray = array();
/* Collect navigationsitems of children */
$sql = "SELECT
A.idcat,
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
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = '$idcat' AND
A.level <= '$navlevel'
ORDER BY
A.idtree";
$db->query($sql);
while ($db->next_record()) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
b.is_start = '1' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
$db2->next_record();
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navarray[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target,
"sub" => array());
$navarray[$db->f("idcat")]["sub"] = navfixed($db->f("idcat"));
/* Connect dynamic part of nav with static part */
if ($db->f("idcat") == $navitemsparentid) {
$navarray[$db->f("idcat")]["sub"] = $navitems;
}
}
return $navarray;
} // end function
/* Create Navigation Array */
$navitems = navfixed('CMS_VALUE[0]');
/* Start Output buffer */
ob_start();
//echo '<ul id="Navigation">';
foreach ($navitems as $key => $data) {
/* 1. Navigations Ebene */
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'ID', '_'.$data['idcat']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navfirst_on.html');
} else {
$tpl->generate('templates/navfirst_off.html');
}
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
/* 2. Navigations Ebene */
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->set('d', 'ID', '_'.$data['idcat']);
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navsecond_on.html');
} else {
$tpl->generate('templates/navsecond_off.html');
}
if (is_array($data['sub'])) {
// echo '<ul id="Navigation">';
foreach ($data['sub'] as $key => $data) {
/* 3. Navigations Ebene */
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navthird_on.html');
} else {
$tpl->generate('templates/navthird_off.html');
}
if (is_array($data['sub'])) {
// echo '<ul id="Navigation">';
foreach ($data['sub'] as $key => $data) {
/* 4. Navigations Ebene */
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navfourth_on.html');
} else {
$tpl->generate('templates/navfourth_off.html');
}
} // end foreach
// echo '</ul>';
} // end if
} // end foreach
// echo '</ul>';
} // end if
} // end foreach
} // end if
} // end foreach
//echo '</ul>';
/* Read out buffer */
$html = ob_get_contents();
/* Clean buffer */
ob_end_clean();
/* Output buffer-contents */
echo $html;
?>
Kashban
PS: Templates gibt's auf Anfrage
-
- Beiträge: 199
- Registriert: Mo 31. Okt 2005, 15:26
- Wohnort: Hamburg
- Kontaktdaten: