tangotaenzer: aktuelle Seite markieren, mit css in der Navi-Leiste formatieren

Hej liebe Leute im Forum,

habe unter Mühen heute eine Navigation mit PHP erstellt. Das sieht wie folgt aus:

<?php
$nav_titel[0][0] = "/inhalt.php?id=1";
$nav_titel[0][1] = "Titel in der Navigationsleiste";
$nav_titel[0][2] = "Angaben für Tooltip";

$nav_titel[1][0] = "/inhalt.php?id=2";
$nav_titel[1][1] = "Titel in der Navigationsleiste";
$nav_titel[1][2] = "Angaben für Tooltip";

for($k = 0; $k < count($nav_titel); $k++)
{
echo '<li><a class="tooltip" href="'."{$nav_titel[$k][0]}" .'"';
echo '>'."{$nav_titel[$k][1]}".'<span>'."{$nav_titel[$k][2]}".'</span>'.'</a></li>'."\n";
}
?>

In einem array wird der Dateiname, der Titel in der Navigationsleiste und bei Berührung mit der Maus erscheint ein Text als Tooltip. Soweit so gut, funktioniert auch sehr schön.

Jetzt würde ich noch gerne die aktuelle Seite, wo der Nutzer sich also befindet in der Navigationsleiste markieren durch einen Pfeil. Allerdings habe ich keine Ahnung wie man mit PHP nun die aktuelle Seite ausgibt, damit ich sie über einen Selektor in CSS ansprechen kann. Weiß jemand Rat? Wenn ja, schon mal besten Dank

Viele Grüße ans Forum

  1. Hallo Tangotänzer,

    $nav_titel[0][0] = "/inhalt.php?id=1";

    Du stellst doch anhand der [link:http://de2.php.net/manual/en/reserved.variables.get.php@title=$_GET]['id']-Variable fest, welcher Inhalt ausgegeben werden soll. In der Schleife kannst Du genauso prüfen, wie Du es in Deinem Script tuen musst, ob der Wert von $nav_title[$n][0] sich mit dem Wert von $_GET['id'] deckt. Dazu würde ich aber an Deiner Stelle etwas vereinfachen:

    ####################################################  
    $nav_title[0][0] = "/inhalt.php?id=0";  
    $nav_titel[0][1] = "Titel in der Navigationsleiste";  
    $nav_titel[0][2] = "Angaben für Tooltip";  
      
    $nav_titel[1][0] = "/inhalt.php?id=1";  
    ####################################################
    

    Somit deckt sich der Schlüssel (Du hast ihn $k in Deiner Schleife benannt) des Arrays $nav_titel mit dem Wert von $_GET['id'].

    Gruß aus Berlin!
    eddi

    --
    Frei nach z1626: Was wir brauchen ist eine neue Aufklärung - eine "Aufklärung 2.0" wenn man so will.
    Wie sieht es bsw. mit Strafverfolgung der Bundesregierung nach § 154 StGB für jedes von Karlsruhe kassierte Gesetz aus? Wurde sie etwa nicht auf das Grundgesetz eingeschworen?
    1. Hallo Eddi,

      Du hast mir wertvolle Tips gegeben, denn zumindest habe ich einen Weg gefunden es funktionstüchtig umzusetzen.

      Ich habe den gleichen Wert von 'id' für den Schlüssel des Arrays verwendet. So kann ich die Werte gut miteinander vergleichen und wenn der Wert gleich ist habe ich meine id=current.

      Das Array habe ich jetzt auch anders und wie ich finde übersichtlicher geschrieben, nämlich so:

      $nav_titel= array(
                       "0" => array(
                                "datei-name" => "/inhalt.php?id=0",
                                "tag-a" => "Titel in der Navigationsleiste",
                                "tag-span" => "Angaben für Tooltip"),
                       "1" => array(
                                "datei-name" => "/inhalt.php?id=1",
                                "tag-a" => "Titel in der Navigationsleiste",
                                "tag-span" => "Angaben für Tooltip"),
                       );

      ebenfalls Gruß aus Berlin (das war sozusagen nachbarschaftliche Hilfe) und Danke!!!

      1. Na?! Hier geblieben! (Gancho)

        $nav_titel= array(
                         "0" => array(
                                  "datei-name" => "/inhalt.php?id=0",
                                  "tag-a" => "Titel in der Navigationsleiste",
                                  "tag-span" => "Angaben für Tooltip"),
                         "1" => array(
                                  "datei-name" => "/inhalt.php?id=1",
                                  "tag-a" => "Titel in der Navigationsleiste",
                                  "tag-span" => "Angaben für Tooltip"),
                         );

        In dem Fall reicht folgende Notation aus, da der Index ja selbst erstellt wird:

        $nav_tilel=array(  
                array(  
                        "datei-name" => "/inhalt.php?id=0",  
                        "tag-a" => "Titel in der Navigationsleiste",  
                        "tag-span" => "Angaben für Tooltip"  
                ),  
                array(  
                        "datei-name" => "/inhalt.php?id=1",  
                        "tag-a" => "Titel in der Navigationsleiste",  
                        "tag-span" => "Angaben für Tooltip"  
                )  
        );  
        print_r($nav_tilel);
        

        Gruß aus Neukölln!
        eddi

        --
        Frei nach z1626: Was wir brauchen ist eine neue Aufklärung - eine "Aufklärung 2.0" wenn man so will.
        Wie sieht es bsw. mit Strafverfolgung der Bundesregierung nach § 154 StGB für jedes von Karlsruhe kassierte Gesetz aus? Wurde sie etwa nicht auf das Grundgesetz eingeschworen?
  2. @@tangotaenzer:

    nuqneH

    Jetzt würde ich noch gerne die aktuelle Seite, wo der Nutzer sich also befindet in der Navigationsleiste markieren durch einen Pfeil.

    Und bei der Gelegenheit gleich dafür sorgen, dass die aktuelle Seite im Menü nicht verlinkt ist. (Punkt 10 der zehn meist-missachteten Homepage-Design-Richtlinien [Nielsen])

    Dein generiertes Markup sollte in etwa so aussehen:

    <li><a href="foo">’ne andere Seite <span>Titel dieser anderen Seite</span></a><li>  
    <li>diese Seite<li>  
    <li><a href="bar">noch ’ne andere Seite <span>Titel jener anderen Seite</span></a><li>
    

    Die Klasse "tooltip" ist überflüssig, wenn ihr alle 'a'-Elemente der Navigationsliste (sie habe die ID "nav") angehören. Diese kannst du dann auch über '#nav a' selektieren.

    Wie kommt nun der rote Pfeil vor(?) „diese Seite“? Als Hintergrundbild des 'li'-Elements. Damit der Text den Pfeil nicht überdeckt, gibt’s Bildbreite plus etwas Abstand als Padding:

    #nav li  
    {  
      background: url(pfeil) no-repeat;  
      padding-left: 42px;  
    }
    

    Die 'a'-Elemente stehen bislang rechts vom Pfeil, sollen diesen aber überdecken, also übers Padding der 'li'-Elemente gehen. Das ist mit negativem linken Abstand zu erreichen:

    #nav a  
    {  
      background: white; /* was immer bei dir passt */  
      margin-left: -42px;  
      padding-left: 42px;  
    }
    

    Qapla'

    --
    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)