Navigation mit allen Untermenüs immer geöffnet
Verfasst: Do 18. Apr 2013, 18:58
Hallo zusammen,
ich möchte eine horizontale Navigation bauen, bei der die jeweiligen Submenüs sichtbar werden, wenn ich per Mouseover über die Hauptmenüpunkte gehe. Dafür müssen im Quellcode alle Menü-Unter-Punkte stehen ... der HTML-CSS-Code ist auch schon fertig vorbereitet und funktioniert, bloß Contenido gibt mir das Submenü immer nur für den "aktuell ausgewählten" Hauptmenüpunkt aus und nicht für alle vorhandenen Unter-Menüpunkte ...
Mein Ziel ist, dass Contenido als Beispiel folgenden Quellcode ausgibt:
Leider gibt es mir aber nur folgenden Code aus:
Folgende Navigations benutze ich:
* @autor Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG 2003
Vielleicht kann mir ja jemand weiterhelfen, was ich in dem Modul ändern muss, damit immer alle vorhandenen Menüpunkte ausgelesen werden. Ich habe hier im Forum nichts finden können.
Vielen Dank!
ich möchte eine horizontale Navigation bauen, bei der die jeweiligen Submenüs sichtbar werden, wenn ich per Mouseover über die Hauptmenüpunkte gehe. Dafür müssen im Quellcode alle Menü-Unter-Punkte stehen ... der HTML-CSS-Code ist auch schon fertig vorbereitet und funktioniert, bloß Contenido gibt mir das Submenü immer nur für den "aktuell ausgewählten" Hauptmenüpunkt aus und nicht für alle vorhandenen Unter-Menüpunkte ...
Mein Ziel ist, dass Contenido als Beispiel folgenden Quellcode ausgibt:
Code: Alles auswählen
<div id="untermenu">
<ul class="navlist">
<li><a href=#" class="erste_ebene_active">Bananen</a>
<ul>
<li><a href="#" class="zweite_ebene">Gelbe Bananen</a></li>
<li><a href="#" class="zweite_ebene">Blaue Bananen</a></li>
<li><a href="#" class="zweite_ebene">Rote Bananen</a></li>
</ul>
</li>
<li><a href="#" class="erste_ebene">Birnen</a></li>
<li><a href="#" class="erste_ebene">Kirschen</a>
<ul>
<li><a href="#" class="zweite_ebene">Grüne Kirschen</a></li>
<li><a href="#" class="zweite_ebene">Rote Kirschen</a></li>
<li><a href="#" class="zweite_ebene">Gelbe Kirschen</a></li>
</ul>
</li>
<li><a href="#" class="erste_ebene">Äpfel</a>
<ul>
<li><a href="#" class="zweite_ebene">Bunte Äpfel</a><!--
<ul>
<li><a href="#" class="dritte_ebene">Rot/Gelbe Äpfel</a></li>
<li><a href="#" class="dritte_ebene">Blau/Gelbe Äpfel/a></li>
<li><a href="#" class="dritte_ebene">Rot/Blaue Äpfel</a></li>
<li><a href="#" class="dritte_ebene">Rot/Grüne Äpfel</a></li>
</ul>-->
</li>
<li><a href="#" class="zweite_ebene">Einfarbige Äpfel</a></li>
<li><a href="#" class="zweite_ebene">Äpfel in Schwarz/Weiß</a></li>
</ul>
</li>
</ul>
</div>
Code: Alles auswählen
<div id="untermenu">
<ul class="navlist">
<li><a href=#" class="erste_ebene_active">Bananen</a>
<ul>
<li><a href="#" class="zweite_ebene">Gelbe Bananen</a></li>
<li><a href="#" class="zweite_ebene">Blaue Bananen</a></li>
<li><a href="#" class="zweite_ebene">Rote Bananen</a></li>
</ul>
</li>
<li><a href="#" class="erste_ebene">Birnen</a></li>
<li><a href="#" class="erste_ebene">Kirschen</a></li>
<li><a href="#" class="erste_ebene">Äpfel</a></li>
</ul>
</div>
* @autor Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG 2003
Code: Alles auswählen
<?php
if ( !is_object($db2) ) {
$db2 = new DB_Contenido;
}
$sichtbar="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
*/
if (!function_exists("catIsChildOf"))
{
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]";
}
/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
/**
* Array storing alle the
* navigation data
*/
$navitems = array();
/* Template Instance */
$tpl = new Template;
/**
* Recursive function for creating
* the navigation array
* @param Int $idcat Category id
*/
function nav($idcat) {
global $navitems, $client, $lang, $cfg;
$db = new DB_Contenido;
$db2 = new DB_Contenido;
$sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'";
$db->query($sql);
$db->next_record();
$parentid = $db->f("parentid");
if ( $parentid == 0 ) {
if ( $idcat != "CMS_VALUE[0]" ){
$navitems = array();
$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 = 'CMS_VALUE[0]'
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';
$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
}
return true;
}
$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'
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';
$tmp_nav[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
$tmp_nav[$idcat]["sub"] = $navitems;
$navitems = $tmp_nav;
/* Function call */
nav($parentid);
} // end function
$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 = '$sel_idcat'
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';
$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
/* Create Navigation Array */
nav($sel_idcat);
/* Start Output buffer */
ob_start();
echo '<ul class="navlist">';
foreach ($navitems as $key => $data) {
echo '<li>';
/* 1. 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'] || is_array($data['sub'])) {
$tpl->generate('templates/navfirst_on.html');
} else {
$tpl->generate('templates/navfirst_off.html');
}
if (is_array($data['sub']) AND "CMS_VALUE[1]" <> 1) {
$counter1=0;
foreach ($data['sub'] as $key => $data) {
$counter1=$counter1 + 1;
//echo '<!-- Counter1='.$counter1.' -->';
if ($counter1 == 1){
echo '<ul>';
}
echo '<li>';
/* 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->next();
if ($idcat == $data['idcat'] || is_array($data['sub'])) {
$tpl->generate('templates/navsecond_on.html');
} else {
$tpl->generate('templates/navsecond_off.html');
}
if (is_array($data['sub'])) {
$counter2=0;
foreach ($data['sub'] as $key => $data) {
$counter2=$counter2 + 1;
//echo '<!-- Counter2='.$counter2.' -->';
if ($counter2 == 1){
echo '<ul>';
}
echo '<li>';
/* 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');
}
echo '</li>';
} // end foreach
if ($counter2 >> 0){
echo '</ul>';
}
} // end if
echo '</li>';
} // end foreach
if ($counter1 >> 0){
echo '</ul>';
}
} // end if
echo '</li>';
} // end foreach
echo '</ul>';
/* Read out buffer */
$html = ob_get_contents();
/* Clean buffer */
ob_end_clean();
/* Output buffer-contents */
echo $html;
?>
Vielen Dank!