Seite 1 von 1
navigation
Verfasst: So 9. Feb 2003, 20:25
von bleed
hi!
ich weiß...das wurde wohl schon oft gefragt, aber ich komm echt nicht weiter!
ich suche eine navigation, bei der die erste ebene horizontal und die zweite und weitere unterebenen vertikal dargestellt werden. möglichst sollte der aktive punkt auch noch markiert werden.
wär klasse, wenn mir jemand helfen könnte!
danke!
ciao bleed
Verfasst: So 9. Feb 2003, 22:56
von JSIT
Hallo!
Ich habe folgendes gemacht, einen neuen Strukturbaum angelegt und habe so 3 Navigationen erzeugt.
Ich habe 2 Hauptnavigationen (verti) und eine Subnavigation (hochz).
Version 4.2 !
Hier meine Hauptnavigationen !
ich habe den Code extern und include Ihn im Layout (geht auch mit Modul)
Code: Alles auswählen
<?php
//-----------<!-- BEGIN MAIN_NAVIGATION -->---------------------------//
//$nav_start = '3';
$nav_col_out = "#FFFFFF";
$nav_col_over = "#FFFFFF";
$nav_col_back = "#FFFFFF";
$nav_col_on = "#FFFFFF";
$nav_col_off = "#FFFFFF";
$img_off = $cfgPathFrontendImg."moarrow_off.gif";
$img_on = $cfgPathFrontendImg."moarrow_on.gif";
$space = $cfgPathFrontendImg."space.gif";
// offenen Pfad finden //
$nav_path = array();
$nav_tree = array();
$tmp_idcat = $idcat;
while($tmp_idcat > 0){
array_push($nav_path, $tmp_idcat);
$tmp_idcat = $con_tree[$tmp_idcat][parent];
};
$nav_path = array_reverse($nav_path);
//var_dump($nav_path);
if($nav_path[0] != $nav_start){$nav_path = array($nav_start);};
// Baum sortieren //
for($i = 0;$i < sizeof($nav_path);$i++){
$tmp_found=0;
for($nr = 0; $nr <= $con_tree_max; $nr++){
if($con_tree[$nr][parent] == $nav_path[$i] && $con_tree[$nr][preid] == '0'){$tmp_found=1;break;}
}
unset($tmp_level);$tmp_level = array();
do{
array_push($tmp_level , $nr);
$nr = $con_tree[$nr][postid];
} while($nr != '0' && $tmp_found==1);
if($i == 0){$nav_tree = $tmp_level;}
else {
$x = array_search("$nav_path[$i]", $nav_tree);
array_splice($nav_tree, $x+1, 0, $tmp_level);
};
};
// Baum ausgeben //
echo "<table width=100% cellspacing=\"3\" cellpadding=\"2\" border=\"0\">\n";
foreach($nav_tree as $nr){
if(($con_tree[$nr][public] == '1' or $auth->auth["uid"] != "nobody") and $con_tree[$nr][visible] == '1'){
echo "<tr><td onMouseOver=\"this.style['background']='".$nav_col_over."';\" ";
echo "onMouseOut=\"this.style['background']='".$nav_col_out."';\" bgcolor=\"$nav_col_out\" nowrap>";
unset($mod_space);
$mod_space = array();
$mod_space = array_pad($mod_space,($con_tree[$nr][level] - 1),"<img src=\"".$space." WIDTH=\"20\" HEIGHT=\"2\" BORDER=\"0\" align=\"left\">");
echo "<span style='background-color:".$nav_col_back.";'>".implode("",$mod_space)."</span>";
if($nr == $idcat){ echo "<span style='background-color:".$nav_col_on."'><img src=\"".$img_on."\"></span>"; }
else { echo "<span style='background-color:".$nav_col_off."'><img src=\"".$img_off."\"></span>"; };
echo "<a href=\"".$con_tree[$nr][link]."\" id=\"left-menu\">".$con_tree[$nr][titel]."</a></td></tr>";
};
};
unset($nav_tree);unset($nav_path);
echo "</table>";
//-------------------<!-- END MAIN_NAVIGATION -->---------------------//
?>
ich rufe die Navigation wie folgt auf
Code: Alles auswählen
// Startebene (parent) schau bei DIR
$nav_start='3'
include ("inc/main_nav.inc.php");
//
$nav_start='19'
include ("inc/main_nav.inc.php");
//
So habe ich zwei Navigationen getrennt
die hochinzantale wie folgt.
Code: Alles auswählen
<!-- BEGIN SECOND_NAVIGATION -->
<?php
//-----------------------------------------------------------------------------//
$nav_start = '4';
//$nav_col_out = "#6699FF";
//$nav_col_over = "#9999FF";
//$nav_col_back = "#6600FF";
//$nav_col_on = "#FF0000";
//$nav_col_off = "#F6F6F&";
//$font_normal = "top-menu";
//$font_aktiv = "top-menu";
$img_on = $cfgPathFrontendImg."moarrow_on_top.gif";
// Baum sortieren //
for($nr = 0; $nr <= $con_tree_max; $nr++){
if($con_tree[$nr][parent] == $nav_start && $con_tree[$nr][preid] == '0'){$tmp_found=1;break;}
}
unset($nav_tree);$nav_tree = array(); $i = -1;
do{
array_push($nav_tree , $nr);
$nr = $con_tree[$nr][postid];
$i++;
} while($nr != '0' && $tmp_found==1 && $i <= $con_tree_max);
// Baum ausgeben //
foreach($nav_tree as $nr){
if(($con_tree[$nr][public] == '1' or $auth->auth["uid"] != "nobody") and $con_tree[$nr][visible] == '1')
{
echo "<a href=\"".$con_tree[$nr][link]."\" id=\"top-menu\">";
if($nr == $idcat){ echo "<img src=\"".$img_on."\" border=\"0\" align=\"middle\" width=\"4\" height=\"10\">"; }
echo $con_tree[$nr][titel]."</a> ";
if($con_tree[$nr][postid] != 0){ echo "| "; };
};
};
unset($nav_tree);
?>
<!-- END SECOND_NAVIGATION -->
wundere dich nicht wegen der IMG´s sind Grafische Untermalungen:-)
Also ich hoffen geholfen zu haben !
Jörg
Verfasst: Mo 10. Feb 2003, 12:06
von bleed
vielen dank! ich probiers mal...
eine frage noch zur sicherheit: "$nav_start='3'" das meint schon immer die jeweilige "idcat" oder?
danke! bleed
Verfasst: Mo 10. Feb 2003, 13:09
von bleed
habs grad ausprobiert! klappt! vielen dank!
eine frage hätt ich trotzdem noch

:
und zwar hätt ich es gerne, dass die erste ebene in der vertikalen navigaiton
nicht angezeigt wird. also, dass vertikal immer nur die jeweiligen unterpunkte auftauchen.
klappt das auch noch irgendwie ?!
vielen dank! bleed