• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Menü problem

Status
Für weitere Antworten geschlossen.

RaZ0oR

Neues Mitglied
Hi,

ich versuche eine Navigation in der Art zu erstellen.
attachment.php

Allerdings weiß ich nicht wie ich das Angehen soll.
Ich habe das Problem, dass ich nicht weiß wie ich das mit den aktiven Seiten hinbekommen soll. D. h. wenn jetzt die Seite "Leistung 2" aktiv ist, möchte ich, dass unter Leistungen ein brauner strich ist und das der Punkt neben Leistung 2 braun wird.
Wie stelle ich das ganze den an?
Klar kann ich für jede .html Seite das soo einstellen wie ich möchte, doch ich weiß nicht wie ich das mit CSS hinbekommen soll.
(ich kenne die hover befehle für links ect. aber ich weiß nicht wie ich diese einsetzen soll)
Am Ende hätte ich gerne eine Seite, wo die Navi enthalten ist und diese Seite würde ich dann gerne überall mit PHP includen, sodass wenn ich etwas an der Navi ändere, sich es auf jeder Seite mit ändert.

Lg Pascal
 

Anhänge

  • navi.JPG
    navi.JPG
    11,5 KB · Aufrufe: 14
CSS kennt den Zustand "aktive Seite" nicht. Viele glauben, dass die Pseudoklasse ":active" das macht, aber dem ist nicht so.

Das heißt, Du musst dem aktiven Link im Menü eine ID oder Klasse mitgeben, die Du dann gemäß Deinen Wünschen formatieren kannst.

Woher weißt Du aber nun, welchem Menüpunkt Du die ID/Klasse geben musst? PHP kennt den Namen der aktuellen Seite. Anhand dessen kannst Du dann die aktive Seite kennzeichnen.

Entweder Du setzt also in jedes <li>-Tag eine Abfrage, ob der Seitenname xyz ist, wenn ja, dann fügst Du die ID/Klasse ein, oder aber Du generierst das Menü gleich vollständig mit PHP, so mach ich es eigentlich immer. Dann erspare ich mir ellenlangen Code, und dass ich beim Einfügen eines Menüpunktes wieder den ganzen PHP-Rotz mit einfügen muss :-)

Gruß,
-Efchen
 
Vielen Dank für deine Antwort.
Wenn ich es jetzt richtig verstanden habe, würdest du einfach schauen ob der name der Seite z.B: Leistung 2 ist und dann die dementsprechende Formation ausführen lassen?
Werde mal schaun ob ich das hinbekomme ;) aber ich denke das sollte nicht soo schwierig werden.

Edit:
Den Part, "vollständig mit PHP generieren" verstehe ich nicht, wie meinst du mit PHP generieren?
 
Der Dateiname des aktuell ausgeführten Skripts, relativ zum Document Root wird in dem vom Server erstellten Array $_SERVER['PHP_SELF'] gespeichert. Beispielsweise enthält $_SERVER['PHP_SELF'] in einem Skript, das über die Adresse http://example.com/test.php aufgerufen wird, den Wert /test.php.

Damit kannst du abfragen, welche Datei aufgerufen wurde, sie mit den Links in deinem Menü vergleichen und dort dann z.B. eine Klasse hinzufügen, die dafür sorgt, dass der entsprechende Eintrag im Menü hervorgehoben wird.

PHP:
<ul>
    <li><a id="index" <?echo ($_SERVER['PHP_SELF'] == "/test.php") ? 'class="active"' : "";?> href="http://example.com/test.php">Test</a></li>
</ul>
 
Ja, ich würde schauen, ob $_SERVER["SCRIPT_NAME"]=="leistung2.php" ist. (müsste SCRIPT_NAME sein).
 
Könnte aber zu Problemen führen, wenn man mal zufälligerweise in einem Unterordner den Dateinamen nochmal hat.
 
Ich ersetze den aktuell angewählten Link in <strong>.
Anstelle
<li><a href="#">..</a></li>
Für den aktuellen:
<li><strong>..</strong></li>

Es ist nicht aufwendiger wie eine id zuzufügen.
Damit habe ich einen Selektor für das css und der Menüpunkt ist nicht anklickbar. Eine kleine SEO-Maßnahme ist es auch noch.

Wenn der Menüpunkt semantisch neutral bleiben soll würde sich <span> eignen. Sollte <span> schon in <li> vergeben sein schrecke ich auch vor <b> nicht zurück.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben