Gast64: Aktuelle Navigation mit ständigem Hovereffekt...

Hey!

Ich hätte gerne dass wenn man einen Link klickt, dieser dann einen ständigen Hovereffekt bekommt, bis man einen anderen Link klickt.
(Die Seite bleibt immer dieselbe, der Inhalt richtet sich nach GET-Variablen...)

http://datakeeper.lima-city.de/neuesproblem.php

Ich könnte nun in PHP schreiben:

  
if($nav == "link1")  
    echo "<a class = 'constanthighlight' href = '?nav=link1'>Link 1</a>";  
else  
    echo "<a href = '?nav=link1'>Link 1</a>";  

Style:

  
a.constanthighlight { color: #CCCCCC; }  

Aber das muss doch (viel) einfacher gehen? Habe sehr viele Links und das wäre doch totaler overkill...
Danke!
mfG

  1. Hi,

    Aber das muss doch (viel) einfacher gehen?

    erst mal ist "constanthighlight" eine reichlich unpassende Klasse. Etwas wie "current" oder "active" wäre sinnbehafteter. Zweitens ist es völlig überflüssig, eine Seite zu verlinken, auf der man sich bereits befindet - also weg mit dem Link. Darüber hinaus scheitert eine CSS-Lösung, den "aktuellen Link" gesondert zu handhaben, daran, dass der CSS-Code nicht weiß, welche URL gerade geladen ist.

    Habe sehr viele Links und das wäre doch totaler overkill...

    Das von Dir beschriebene Verfahren zu optimieren ist eine Sache generisch(er)en serverseitigen Codes.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. "Zweitens ist es völlig überflüssig, eine Seite zu verlinken, auf der man sich bereits befindet"

      ? Ich habe doch geschrieben, dass der Inhalt je nachdem was in $_GET["nav"] steht angezeigt wird.

      "Darüber hinaus scheitert eine CSS-Lösung, den "aktuellen Link" gesondert zu handhaben, daran, dass der CSS-Code nicht weiß, welche URL gerade geladen ist"

      Deshalb frage ich doch hier, was ich tun kann.

      MfG

      1. Hi,

        "Zweitens ist es völlig überflüssig, eine Seite zu verlinken, auf der man sich bereits befindet"
        ? Ich habe doch geschrieben, dass der Inhalt je nachdem was in $_GET["nav"] steht angezeigt wird.

        ja, aber Du scheinst es bei einem Link belassen zu wollen, der sich auf der Seite befindet, zu der man durch den Klick eben dieses Links gelangt ist. Das ist Unfug.

        "Darüber hinaus scheitert eine CSS-Lösung, den "aktuellen Link" gesondert zu handhaben, daran, dass der CSS-Code nicht weiß, welche URL gerade geladen ist"
        Deshalb frage ich doch hier, was ich tun kann.

        Und, konnte Dir meine Antwort darauf helfen? Wenn ja, warum nicht?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. ja, aber Du scheinst es bei einem Link belassen zu wollen, der sich auf der Seite befindet, zu der man durch den Klick eben dieses Links gelangt ist. Das ist Unfug.

          Nein, ist es nicht zwangsläufig. Stichwort gleichbleibende Menüs!

          Du kannst natürlich den Code verkürzen, es gibt verschiedene Möglichkeiten. Wie verkürzt man generel Codes? Man verzweigt nur das, was _nicht_ gleich ist, z.B.:

            
          echo '<a ';  
          if($_GET['nav']=='link1') echo 'class="active" ';  
          echo 'href ="?nav=link1">Link 1</a>';  
          
          

          Gruß, Samoht

          --
          fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
          "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
          (Kristian Wilson, Nintendo, 1989)
          1. Jo, schon klar.
            Aber gibt es da nicht eine noch einfachere/kürzere Methode? Wie könnte ich das noch angehen?

            Danke!
            MfG

            1. Aber gibt es da nicht eine noch einfachere/kürzere Methode? Wie könnte ich das noch angehen?

              Arbeite mit einer Datenbank und erzeuge die Links automatisch

              Gruß, Samoht

              --
              fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
              "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
              (Kristian Wilson, Nintendo, 1989)
              1. Dafür ist mir die Datenbank zu langsam (3 Euro webspace :o).

                Falls jemandem noch was einfällt... bitte sehr!

                MfG

                1. Hä?

                  zu langsam?
                  Fürn paar Links?

                  Vielleicht solltest Du mal genauer beschreiben, was Du brauchst.

                  Gruß, Samoht

                  --
                  fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
                  "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
                  (Kristian Wilson, Nintendo, 1989)
                  1. Hab ich das nicht schon?

                    So...

                      
                    echo '<a ';  
                    if($_GET['nav']=='link1') echo 'class="active" ';  
                    echo 'href ="?nav=link1">Link 1</a>';  
                    
                    

                    ...nur noch einfacher/kürzer wenns geht, oder macht man das üblicherweise so? Für viele Links wird das viel Code/Eventuell unübersichtlich.

                    MfG

                    1. Hallo,

                      wenn Du seite "foobar" aufrufst und das im Menü so schreibst,
                      <a href="skript.php?seite=foobar">
                      dann hast Du doch foobar in $_GET['seite'], oder nicht?
                      Warum suchst Du dann nicht im Menü nach dem Link, in dem
                      preg_match href="skript.php?seite={$_GET['seite']}" wahr ist und ergänzt dann mit preg_replace das Anker Element um class="current"? Die Klasse current kannst Du dann mit CSS behandeln wie Du möchtest. Den Anker komplett ausser Kraft zu setzen, wie vorgeschlagen ist auch kein Problem.

                      Fertig ist die Laube.

                      netten Tag
                      ^da Powl

                      --
                      ===============================
                      powl.hat-gar-keine-homepage.de/
                      1. Hä?

                        Dann müsste ich doch alle Links in einer Variablen gespeichert haben...?

                        1. Hallo,

                          oder in eine variable einlesen. $menu = file(menu.txt)
                          Lager das Menu einfach aus. Lese es ein, modifiziere es gemäß dem GET Inhalt und gut.
                          Oder schreibe jeden Link einzeln.
                          Clientseitig ginge es auch per JS, wenn es nicht so wichtig ist, dass es uU nicht funktioniert.

                          netten Tag
                          ^da Powl

                          --
                          ===============================
                          powl.hat-gar-keine-homepage.de/
                          1. Hey!

                            Danke, aber die Links in meinen menu.php Dateien müssen selbst erst per PHP generiert werden, zB...

                              
                            <a href = '?lang=" . $lang . "&amp;nav=" . $nav . "&amp;subnav=about'>About</a>  
                            
                            
                            1. Hallo,

                              und WANN baust Du die Links? Hast Du dann schon etwas in $_GET stehen?

                              netten Tag
                              ^da Powl

                              --
                              ===============================
                              powl.hat-gar-keine-homepage.de/
                            2. Ne sorry hab zu wenig nachgedacht...
                              Ich generiere die Links jetzt per PHP, in den menu.php Dateien steht nur noch zB...

                              about:About
                              blackboard:Blackboard

                              ...usw... und generiert wird so:

                                
                              $menu = file ("content/" . $lang . "/" . $nav . "/menu.php");  
                              $numLines = count($menu) - 1;  
                                
                              echo "&lt; \n";  
                                
                              foreach($menu as $numLine => $menuLine)  
                              {  
                                  $menuLine = trim($menuLine);  
                                
                                  $splitLine = explode(":", $menuLine);  
                                
                                  echo "<a ";  
                                
                                  if($subnav == $splitLine[0])  
                                      echo "class = 'activesubnav' ";  
                                
                                  echo "href = '?lang=" . $lang . "&amp;nav=" . $nav . "&amp;subnav=" . $splitLine[0] . "'>" . $splitLine[1] . "</a>";  
                                
                                  if($numLines != $numLine)  
                                      echo " - \n";  
                              }  
                                
                              echo "\n &gt;\n";  
                              
                              

                              Falls es jemanden interessiert (Die \n sind nur dazu da, dass der Quelltext auch schön aussieht...).
                              Mfg

    2. Zweitens ist es völlig überflüssig, eine Seite zu verlinken, auf der man sich bereits befindet - also weg mit dem Link.

      Da muss ich widersprechen.
      Zwar sollte der aktuelle Menüpunkt deutlich abgehoben sein und es sollte dem Besucher kenntlich gemacht werden, dass er sich auf genau dieser Seite befindet (z.B. dadurch, dass der aktuelle Menüpunkt nicht wie die anderen "gehovert" wird), ein Link sollte er aber bleiben.
      Ich erlebe es oft genug, dass ich die Seite aktualisieren möchte und dann auf den nicht vorhandenen Link klicke. Oft ist das bei Formularen der Fall und ich möchte mir die lästige POST Abfrage des Browser sparen.

      1. Hi,

        Da muss ich widersprechen.

        mit diesem Widerspruch stehst Du zwar nicht alleine da, aber im Allgemeinen stammt er von Anfängern.

        Ich erlebe es oft genug, dass ich die Seite aktualisieren möchte

        Aus welchem Grund? Weil Du eine Änderung erwartest? Dann möchtest Du offenbar auf eine Seite, auf der Du Dich *nicht* befindest - auch wenn sie die selbe URL besitzt.

        Oft ist das bei Formularen der Fall und ich möchte mir die lästige POST Abfrage des Browser sparen.

        Dann möchtest Du also nicht auf die Seite, die der Server nach der Bestätigung des Formularversandes geschickt hat, sondern auf z.B. die Formularseite.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. mit diesem Widerspruch stehst Du zwar nicht alleine da, aber im Allgemeinen stammt er von Anfängern.

          Ich kann Dir nicht folgen.

          Beispiel:

          Ich habe in meiner Navigation einen Punkt, der nennt sich "Forum". Wenn ich den anklicke komme ich - man glaubts kaum - ins Forum. Sagen wir, auf eine Übersichtsseite aller Themen, so wie hier bei Self.
          Nun möchte ein User die Seite aktualisieren, um zu gucken ob jemand was geschrieben hat. Viele kennen allerdings "Aktualisieren" nicht, egal in welcher Form.

          So, und wenn ich Dich richtig verstanden habe, sagst Du, dass der Link zum Forum jetzt nicht mehr vorhanden sein sollte - man befindet sich ja bereits in diesem.

          Worauf soll der User klicken?

          Gruß, Samoht

          --
          fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
          "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
          (Kristian Wilson, Nintendo, 1989)
          1. Hi,

            Ich kann Dir nicht folgen.

            dann solltest Du mein vorhergegangenes Posting noch einmal lesen. Ich habe das von Dir genannte Beispiel bereits behandelt.

            So, und wenn ich Dich richtig verstanden habe, sagst Du, dass der Link zum Forum jetzt nicht mehr vorhanden sein sollte - man befindet sich ja bereits in diesem.

            Dein Fehler ist, dass Du "Seite" mit "URL" gleichsetzt.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Dein Fehler ist, dass Du "Seite" mit "URL" gleichsetzt.

              Der Unterschied ist mir bewusst, allerdings finde ich es in diesem Zusammenhang der Fragestellung Haarspalterei. Mir war - so glaube ich jedenfalls - von Anfang an klar, worauf der Fragesteller hinauswollte. Und dann fängst Du mich an zu verwirren... ;-)

              Gruß, Samoht

              --
              fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
              "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
              (Kristian Wilson, Nintendo, 1989)