ich habe folgende Nuss, die ich einfach nicht knacken kann...
Anzuschauen unter:
http://www.zebraundgras.de/www/cms/
Ich bin dabei zwei Navigationslösungen zu fusionieren.
1. Navi aufteilen in 2 Module (Modul 1 = Ebene 1; Modul 2 = Ebene 2+3)
2. Diese beiden Module duplizieren und zeitgleich in ein und demselben Template benutzen.
Was funktioniert bereits:
- Die Navi in 2 Module aufteilen klappt.
Was funktioniert noch nicht:
- Die beiden Module duplizieren und 2 verschiedene Navibäume auf der selben Seite darstellen.
Was passiert zur Zeit:
- Obwohl der Code an den relevanten Stellen in der duplizierten Version geändert wurde, wird in der duplizierten Version der gleiche Baum wie in der original Version angezeigt.
Anbei mal der Output Code meines Duplizierten Moduls für Darstellung Ebene 1:
Code: Alles auswählen
<?php
// template klasse includen
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
/**
* Array storing alle the
* navigation data
*/
$nav2items = array();
// template instanz
$tpl = new Template;
function nav2($idcat) {
global $nav2items, $client, $lang, $db, $cfg;
//searches for parentid
$sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat='$idcat'";
$db->query($sql);
$db->next_record();
$parentid = $db->f("parentid");
// If parentid equals 0 break,
// first level reached.
if($parentid==0){
if($idcat!=1){
$nav2items=array();
//search for the idcat where I´m the parent
$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='1' ORDER BY A.idtree";
$db->query($sql);
while ($db->next_record()) {
$nav2items[$db->f("idcat")] = array("idcat"=>$db->f("idcat"),
"name"=>$db->f("name"));
}
}
return true;
}
// select idcats on the same level
// they have the same parent id
$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_nav2[$db->f("idcat")] = array("idcat"=>$db->f("idcat"),
"name"=>$db->f("name"));
}
// Add the old navigation array to the new one,
// because it is an item of the new one on place $idcat
$tmp_nav2[$idcat]["sub"] = $nav2items;
$nav2items = $tmp_nav2;
nav2($parentid);
}
if(!isset($idcat)){
//set the start idcat
$idcat = 1;
}
//search for the idcat where I´m the parent
$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' ORDER BY A.idtree";
$db->query($sql);
while ($db->next_record()) {
$nav2items[$db->f("idcat")] = array("idcat"=>$db->f("idcat"),
"name"=>$db->f("name"));
}
nav2($idcat);
/**
* array $nav2items enthält alle daten
* die für das aufbauen der navigation
* notwendig sind.
*/
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td><img src="images/button_freihalter-links.jpg" width=41 height=14 alt=""></td>';
foreach ($nav2items 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_2.html');
} else {
$tpl->generate('templates/navfirst_off_2.html');
}
} // end foreach
echo '<td><img src="images/button_freihalter-rechts.jpg" width=43 height=14 alt=""></td></tr></table>';
?>
Wo habe ich Parameter oder Variablen übersehen, die noch geändert werden müssen, damit die duplizierte Navi erkennt, dass sie nicht dasselbe wie die erste anzeigen soll?
Anbei der Link zum Thread mit der "zerteilten Navi". Nur als Quellenhinweis.
http://www.contenido.de/forum/viewtopic.php?t=1413
Wer kann mir weiterhelfen?

Danke,
smeusel