Sanny: Linkleiste situationsbedingt anders aussehen lassen

Hallo,

ich habe auf der linken Seite einer Webseite eine Linkleiste, die per php includiert ist.

Nun möchte mein Kunde, für den ich das mache, dass man erkennen kann, wo auf der Seite man gerade ist. Sprich, klickt man auf "Kontakt", soll nun "Kontakt" markiert sein. Klickt man auf "Unser Service", soll "Unser Service" markiert sein.

Soweit, so gut, das sieht man ja häufig.
Meine bisherige Idee ist, eben wenigstens für die Oberkategorien verschiedene php-includes zu haben, die jeweils anders aussehen. Gibt es noch weitere Unterkategorien (z.B. Unser Service >> Servereinrichtungen oder Unser Service >> Beratung), sieht man nicht mehr genau, wo man ist, sondern nur, dass man auf "Unser Service" ist.

Geht das aber auch einfacher, sodass automatisch erkannt wird, welcher Teil gerade markiert sein soll? Wo kann man so etwas nachlesen? Macht es als php-Anfänger überhaupt Sinn, sich da reinzulesen (die Seite hat nur etwa 20 Seiten)? Was meine bisherige Suche nach Antworten angeht: mir fehlen leider die Stichworte.. :(

Danke, Liebe Grüße,
Sanny

  1. Nun möchte mein Kunde, für den ich das mache, dass man erkennen kann, wo auf der Seite man gerade ist. Sprich, klickt man auf "Kontakt", soll nun "Kontakt" markiert sein. Klickt man auf "Unser Service", soll "Unser Service" markiert sein.

    Ich habe das so gelöst, dass ich am Anfang jeder Seite eine Page-ID definiere. Später binde ich dann das Menü mittels include('irgendwas.inc') ein. Innerhalb des Include gibt es ein Array aller Menüeinträge, das ich nacheinander abarbeite und den aktuellen Index mit der gesetzten Page-ID abgleiche. Wenn keine Übereinstimmung, wird ein normaler Link ausgegeben, wenn Übereinstimmung, wird nur der Verweistext ohne A-Element drumherum ausgegeben, das Ganze noch ein bisschen hervorgehoben, damit man den Unterschied sieht.

    Vielleicht nützt Dir dieser Ansatz etwas.

    Siechfred

    --
    Wir vom Moderatorenteam haben keinerlei Humor, von dem wir wüssten.
    1. ja, der nützt mir auf jeden Fall etwas, danke!
      Dann werde ich mich wohl doch mal etwas ins php stürzen müssen ;)

      Vielen Dank,
      Sanny

  2. Hi Sanny,
    ich würde das genauso machen wie Siechfried es vorgeschlagen hat.

    Wenn du außerdem Usern ihre Position innerhalb von Unterverzeichnissen abbilden möchtest, gäbe es da z.B. die Möglichkeit, zusätzlich zu deiner normalen Navigation eine sogenannte breadcrumb (dt. Brotkrumen) Navigation einzubauen. Da gibt es fertige Scripte (Google suchen).

    Gruß
    Antipitch

    1. Hallo Antipitch,

      danke! Das erscheint mir als eine schöne -zusätzliche- Sache. Auch wenn ich, wenn ich es einbinden möchte, nun jeden Link neu verlinken muss- eben absolut.. aber das scheint die Arbeit wert.

      LG, Iris

      1. Hi Iris,

        ich weiß zwar nicht, für was für eine Lösung du dich jetzt entschieden hast, aber mach dir nicht zuviel Arbeit. Absolute Verweise setzen oder gar irgendwas hart codiert in deine php's schreiben musst für so eine breadcrumb navigation jedenfalls nicht.

        Skripte, die mit $_SERVER['PHP_SELF'] arbeiten, laufen auf den meisten shared Servern (z.B. 1&1) und sind -solange du nicht mit ultrasensiblen Daten arbeitest- meiner Meinung nach ok. Z.B. dieses hier:

        <?php
        $an="Sie befinden sind hier: ";
        $home="http://www.drweb.de/"; // Hier Ihre Domain
        $pie=explode("/","$_SERVER[PHP_SELF]");
        $tr=" > "; // Alternativ: ':', '/'
        $b=count($pie);
        echo $an."<a href="".$home."">Startseite</a>"; // Alternativ: 'Home', 'Start'
        for($a=1;$a<$b-1;$a++){
        $ta=$ta.$pie[$a]."/";
        echo $tr."<a href="".$home.$ta."">".ucfirst($pie[$a])."</a>";}
        $file=explode('.',ucfirst($pie[$b-1]));
        echo "<b>".$tr.$file[0]."</b>";
        ?>

        Fertig ist die breadcrumb. So könntest du aber auch das von Siechfred vorgeschlagene Navgationskonzept weiter automatisieren oder andere Sachen (Werte aus Datenbank etc.)

        Das Script von hier:
        http://www.drweb.de/php/brotkrumen.shtml

        Zu $_SERVER['PHP_SELF'] siehe hier:
        http://de3.php.net/manual/de/reserved.variables.php#reserved.variables.server

        Gruß
        Antipitch

  3. Hallo Sanny,

    Nun möchte mein Kunde, für den ich das mache, dass man erkennen kann, wo auf der Seite man gerade ist. Sprich, klickt man auf "Kontakt", soll nun "Kontakt" markiert sein. Klickt man auf "Unser Service", soll "Unser Service" markiert sein.

    Das kann man auch mit CSS lösen.
    Hier eine Fundstelle die das Vorgehen beschreibt:
    http://www.456bereastreet.com/archive/200503/setting_the_current_menu_state_with_css/

    Viele Grüße

    Stefan

    --
    bythewaythewebsuxgoofflineandenjoytheday