Dynamische Navigation

Brian Folte

Angesehenes Mitglied
Hallo ich habe folgendes Problem. Das folgende Script das die Navigation untereinander an, ich möchte dies nun nebeneinander haben:
Hier mal ein Beispiel:

Hauptmenu1 Hauptmenu2 hauptmenu 3
Unterkat. 1 Unterkat 2 ......

Selbstverständlich sollen die Unterkat. erst zu sehen sein wenn man eine Hauptkategorie angeklickt hat.

Nur irgendwie bekomme ich das mit dem folgenden Script nicht hin:
CODE <?
/*
die Variable $siteRoot muss angepasst werden, wenn die dateien in einem Unterverzeichnis abgelegt werden. Wenn das Unterverzeichnis z.B. "DIR" heißt, dann muss $siteRoot="/DIR/"; sein
*/

$siteRoot="/";
$menuStruct=array(
"Home"=>array("root"=>$siteRoot."index.php"),
"Allgemein"=>array("root"=>$siteRoot."kontakt.php", "Irgendwas"=>$siteRoot."irgendwas.php", "Noch mehr"=>$siteRoot."nochmehr.php"),
"Über uns"=>array("root"=>$siteRoot."anmeldung.php", "Firma"=>$siteRoot."anmeldung.php", "Beteiligungen"=>$siteRoot."beteiligungen.php")
);


if($PHP_SELF == $menuStruct[0]['root']){
foreach($menuStruct as $key=>$value){
if($PHP_SELF == $value['root']){


echo "<td class=\"fstLevelActive\"><a href=".$value['root'].">$key</a>< class=\"fstLevel\"><a href=".$value['root'].">$key</a></td>\n";
}
else{
echo "< class=\"fstLevel\"><a href=".$value['root'].">$key</a></>\n";
}
}
} else {
foreach($menuStruct as $key=>$value){
if($PHP_SELF == $value['root']){
echo "<table><tr><td class=\"fstLevelActive\"><a href=".$value['root'].">$key</a></td>\n";
}else{
echo "<td class=\"fstLevel\"><a href=".$value['root'].">$key</a></td></tr></table>\n";
}
foreach($value as $key2=>$value2){
if(array_search($PHP_SELF,$value)){
if($key2 != "root")
if($PHP_SELF == $value2){
echo "<table><tr><td class=\"secLevelActive\"><a href=".$value2.">$key2</a></td>\n";
}else{
echo "<td class=\"secLevel\"><a href=".$value2.">$key2</a></td></tr></table>\n";
}
}
}
}
}
?>




Egal ob ich divs verwende oder die tabellenstruktur es klappt einfach nicht.

Die hauptkategorien bekomme ich nebeneinander, die unterkategorien schweben dann aber überall auf der Seite rum außer da wo sie sollen.

Danke für eure Hilfe.

LG Brian
 
Das war mein verbastelter Code hier der Originale mit den divs.


CODE <?
/*
die Variable $siteRoot muss angepasst werden, wenn die dateien in einem Unterverzeichnis abgelegt werden. Wenn das Unterverzeichnis z.B. "DIR" heißt, dann muss $siteRoot="/DIR/"; sein
*/

$siteRoot="/";
$menuStruct=array(
"Home"=>array("root"=>$siteRoot."index.php"),
"Über uns"=>array("root"=>$siteRoot."ueberuns.php", "Firma"=>$siteRoot."firma.php", "Beteiligungen"=>$siteRoot."beteiligungen.php"),
"Allgemein"=>array("root"=>$siteRoot."allgemein.php", "Irgendwas"=>$siteRoot."irgendwas.php", "Noch mehr"=>$siteRoot."nochmehr.php")
);


if($PHP_SELF == $menuStruct[0]['root']){
foreach($menuStruct as $key=>$value){
if($PHP_SELF == $value['root']){
echo "<div class=\"fstLevelActive\"><a href=".$value['root'].">$key</a></div>\n";
}
else{
echo "<div class=\"fstLevel\"><a href=".$value['root'].">$key</a></div>\n";
}
}
} else {
foreach($menuStruct as $key=>$value){
if($PHP_SELF == $value['root']){
echo "<div class=\"fstLevelActive\"><a href=".$value['root'].">$key</a></div>\n";
}else{
echo "<div class=\"fstLevel\"><a href=".$value['root'].">$key</a></div>\n";
}
foreach($value as $key2=>$value2){
if(array_search($PHP_SELF,$value)){
if($key2 != "root")
if($PHP_SELF == $value2){
echo "<div class=\"secLevelActive\"><a href=".$value2.">$key2</a></div>\n";
}else{
echo "<div class=\"secLevel\"><a href=".$value2.">$key2</a></div>\n";
}
}
}
}
}
?>


 
Na ja, das Beispiel von mir wäre jetzt eine Java-Script-Version, wo Du noch Bilderchen dazu benötigst (Hintergrund der Navig) - das andere Beipsiel von Dir ist absolut nicht dynamisch, so weit ich das jetzt sehen konnte
smile.gif


Gruß Dirk
 
Ja da hast du Recht mein Beispiel ist nicht Dynamisch jedoch sehr Praktisch nur finde ich nirgendwo ein solches Script geschweige den eine Anleitung dazu.

Mit Java Script habe ich bis jetzt keine guten Erfahrungen getätigt da viele meiner User damit Probleme haben.

LG Brian
 
Na ja, meines funktioniert in allen drei gängigen Browsern -habe es mir allerdings freundlciherweise auch nur von einer Schweizerfirma geben lassen (ist von dehen eine Eigenentwicklung).

Das andere ist wohl kein Script in dem Sinne, dies kannst Du zB. über CSS gut realisieren.
Vielleicht hilft ja dieser Link Dir weiter:

http://www.dynamicdrive.com/dynamicindex1/indexb.html

Gruß Dirk
 
Danke für den Link dennoch scheint nicht das richtige dabei zu sein.
Ich verzweifel noch, wie ich es hasse 6 Stunden an einer Navigation zu sitzen.

LG Brian
 
So sieht der CSS bereich dazu aus
CODE TEXT-DECORATION: none;
DISPLAY: list-item;
WIDTH: 120;
BORDER: 1px solid #3366ff;
PADDING: 3px;
MARGIN: 1Px;
FONT-FAMILY: verdana, arial, helvetica;
FONT-SIZE: 10px;
FONT-WEIGHT: normal;
TEXT-ALIGN: right;
COLOR: #ffffff;
BACKGROUND-COLOR: #688EE8;


Bei DISPLAY kann ich einfügen was ich will es reagiert nur auf none.

 
Was ich jetzt nicht verstehe, wieso nun die Hauptkategorien mit den Unterkategorien auf einer ebene sind.

Könnte mir dies vielleicht jemand erklären?

LG brian

CODE
if($PHP_SELF == $value['root']){
echo "<td class=\"fstLevelActive\"><a href=".$value['root'].">$key</a></td>\n";
}else{
echo "<td class=\"fstLevel\"><a href=".$value['root'].">$key</a></td><br />\n";
}
foreach($value as $key2=>$value2){
if(array_search($PHP_SELF,$value)){
if($key2 != "root")
if($PHP_SELF == $value2){
echo "<td><div class=\"secLevelActive\"><a href=".$value2.">$key2</a></div></td>\n";
}else{
echo "<td><div class=\"secLevel\"><a href=".$value2.">$key2</a></div></td>\n";
 
Zurück
Oben