Hi emergence, das ist nicht unbedingt was ich will.
Was ich nicht verstehe, die Unterseiten wurden mit dem selben Modul auf JEDEN Fall schon mal angezeigt. (Freitag erstellt und alles ging... Montag Seite aufgemacht und keine Unterseiten im Hauptnavi da...Kotz) so was raff ich einfach nicht.
Hier nochmal das Modul, es war das, wo du mir hilfreicherweise den Input repariert hast:
Code: Alles auswählen
?>
<table cellspacing="0" cellpadding="0" cellpadding="4"></br>
<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>
</table>
<?php
Output:
Code: Alles auswählen
<?php
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];
}
// template klasse includen
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
/**
* Array storing alle the
* navigation data
*/
$navitems = array();
// template instanz
$tpl = new Template;
function nav($idcat) {
global $navitems, $client, $lang, $db, $cfg;
$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()) {
$navitems[$db->f("idcat")] = array("idcat"=>$db->f("idcat"),
"name"=>$db->f("name"));
}
}
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()) {
$tmp_nav[$db->f("idcat")] = array("idcat"=>$db->f("idcat"),
"name"=>$db->f("name"));
}
$tmp_nav[$idcat]["sub"] = $navitems;
$navitems = $tmp_nav;
nav($parentid);
}
$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() ) {
$navitems[$db->f("idcat")] = array("idcat"=>$db->f("idcat"),
"name"=>$db->f("name"));
}
nav($sel_idcat);
/**
* array $navitems enthält alle daten
* die für das aufbauen der navigation
* notwendig sind.
*/
echo '<table cellspacing="0" cellpadding="0" border="0">';
foreach ($navitems as $key => $data) {
// 1. navi ebene
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat'].'&client='.$client.'&lang='.$lang));
$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'])) {
foreach ($data['sub'] as $key => $data) {
// 2. navi ebene
// 1. navi ebene
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat'].'&client='.$client.'&lang='.$lang));
$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'])) {
foreach ($data['sub'] as $key => $data) {
// 3. navi ebene
// 1. navi ebene
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat'].'&client='.$client.'&lang='.$lang));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navthird_on.html');
} else {
$tpl->generate('templates/navthird_off.html');
}
} // end foreach
} // end if
} // end foreach
} // end if
} // end foreach
echo '</table>';
?>
Das ist doch ein Modul für drei Ebenen, oder?
Auf einer anderen HP von mir nutze ich es auch und es klappt prima. Ich hab auch mit der Baumstruktur schon viel probiert. Momentan habe ich alle Punkte erster Ebene in einzelnen Bäumen angelegt. Hat dazu vielleicht noch einer eine Idee? Soll ich vielleicht einen Baum mit "Home" als obere Ebene anlegen und die eigentlichen Menüpunkt drunter anordnen als zweite Ebene? (Hab ich allerdings auch schon probiert)
Hmmm ich bin für jede Hilfe / Idee zu haben. Danke
und Grüße
Matthias