RouvenW: Navigation in PHP-Datei auslagern

Guten Abend zusammen! :-)

Auf meiner Homepage habe ich meine Navigation (ein ul Element) mittels PHP in eine externe Datei ausgelagert, so dass Änderungen an der Navigation zentral an einer Stelle gemacht werden können und nicht auf jeder einzelnen xhtml Seite vorgenommen werden müssen.

Nun aber habe ich folgendes Problem:
Meine Navigation soll beim Aufruf eines Menüpunktes Unterpunkte dieser Kategorie anzeigen. Das habe ich früher realisiert, indem der aufgerufene Menüpunkt im li-Element die Klasse "current" stehen hat. Per CSS werden die Unterpunkte dieses li-Elements angezeigt, andere Unterpunkte nicht.
Da nun aber die Navigation in einer zentralen PHP Datei liegt, lässt sich das Anzeigen der Unterpunkte nicht mehr mit der current-Klasse realisieren.

Bleibt mir nichts anderes übrig als die Navigation wieder in jede einzelne xhtml Seite einzufügen?

Ich hoffe, ihr konntet mir folgen. :-)

Danke im voraus!

Viele Grüße,
Rouven

  1. Hallo!

    Da nun aber die Navigation in einer zentralen PHP Datei liegt, lässt sich das Anzeigen der Unterpunkte nicht mehr mit der current-Klasse realisieren.

    warum nicht? Das HTML-Ergebnis sollte doch nach wie vor das Selbe sein wie zuvor, nur dieses Mal "dynamisch" generiert?! Ich wundere mich ein wenig!

    Gruß, Markus

    1. Hi,

      Nur um hier nochmal den Markus zu untermauern: Warum nicht? *wunder*

      Technisch gesehen ist die Datei, die der Browser bekommt die gleiche wie vorher auch.

      1. Hi,

        Nur um hier nochmal den Markus zu untermauern: Warum nicht? *wunder*

        Technisch gesehen ist die Datei, die der Browser bekommt die gleiche wie vorher auch.

        Warscheinlich habe ich mich zu unverständlich ausgedrückt.

        Ich versuche es mal mit einem Beispiel.
        Auszug der Navigation auf einer xhtml Seite:
        <ul>
          <li>
            Kategorie 1
            <ul>
              <li>Unterpunkt 1.1</li>
            </ul>
          </li>
          <li class="current">
            Kategorie 2
            <ul>
              <li>Unterpunkt 2.1</li>
            </ul>
          </li>
        </ul>

        In diesem Fall befindet man sich auf der xhtml Seite auf der die Kategorie 2 angeklickt wurde (gekennzeichnet durch die Klasse "current"), so dass der Unterpunkt dieser Kategorie angezeigt wird.

        Da aber eine Navigation, die sich auf jeder einzelnen xthml Seite befindet sehr unhandlich zu warten ist, habe ich die komplette Navigation in eine PHP-Datei ausgelagert.
        Diese sieht dann beispielsweise so aus (ohne PHP-Code):
        <ul>
          <li>
            Kategorie 1
            <ul>
              <li>Unterpunkt 1.1</li>
            </ul>
          </li>
          <li>
            Kategorie 2
            <ul>
              <li>Unterpunkt 2.1</li>
            </ul>
          </li>
        </ul>

        Hier besteht jetzt das Problem, dass ich keine "current"-Klasse mehr einsetzen kann, da ja alle xhtml Seiten diesen code für die Navigation bekommen.

        Ich hoffe, ich konnte es deutlicher machen, wo mein Problem liegt. :-)

        Viele Grüße,
        Rouven

        1. Hallo Rouven,

          Hier besteht jetzt das Problem, dass ich keine "current"-Klasse mehr einsetzen kann, da ja alle xhtml Seiten diesen code für die Navigation bekommen.

          Ich hoffe, ich konnte es deutlicher machen, wo mein Problem liegt. :-)

          Ja - ich habe damals bei meiner Homepage ein ähnliches Problem gehabt.
          Ich habe es so gelöst, dass ich das Menü dynamisch aufbaue.

          Die einzelnen XHTML-Seiten setzen (bevor sie das Menü einbinden) eine Variable, etwa $nav = 'home'.
          Die Menü-Datei baut dann das Menü auf und fügt im entsprechenden Menüpunkt einfach den entsprechenden Code ein.

          Grüße

          Marc Reichelt || http://www.marcreichelt.de/

          --
          Linux is like a wigwam - no windows, no gates and an Apache inside!
          Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
          1. Hallo Marc,

            Ja - ich habe damals bei meiner Homepage ein ähnliches Problem gehabt.
            Ich habe es so gelöst, dass ich das Menü dynamisch aufbaue.

            Die einzelnen XHTML-Seiten setzen (bevor sie das Menü einbinden) eine Variable, etwa $nav = 'home'.
            Die Menü-Datei baut dann das Menü auf und fügt im entsprechenden Menüpunkt einfach den entsprechenden Code ein.

            Das hört sich gut an - Danke für den Tipp! :-)
            Ich denke, damit werde ich das Problem lösen können.

            Viele Grüße,
            Rouven

            1. Hallo,

              Ja - ich habe damals bei meiner Homepage ein ähnliches Problem gehabt.
              Ich habe es so gelöst, dass ich das Menü dynamisch aufbaue.

              Die einzelnen XHTML-Seiten setzen (bevor sie das Menü einbinden) eine Variable, etwa $nav = 'home'.
              Die Menü-Datei baut dann das Menü auf und fügt im entsprechenden Menüpunkt einfach den entsprechenden Code ein.

              Das hört sich gut an - Danke für den Tipp! :-)
              Ich denke, damit werde ich das Problem lösen können.

              Ja, kannst du.
              Ich löse es sehr ähnlich, finde aber meine Lösung etwas "eleganter" ;-)
              Ich frage einfach ab, ob der Scriptname derselbe ist, wie von dem angezeigten Navigationslinkziel.
              So sieht dann bei mir z.B. ein Navilink aus:
              <li><a href="/index"<?php if($_SERVER['PHP_SELF'] == '/index.php'){ echo ' class="selected"'; } ?>>Home</a></li>

              Grüße,
              Willi