+ Antworten
Seite 1 von 4 1 2 3 4 LetzteLetzte
Ergebnis 1 bis 15 von 49

Thema: Verschachtelte Listennavigation

  1. #1
    TP-Veteran Terry hilft, wo's geht Terry hilft, wo's geht Terry hilft, wo's geht Avatar von Terry
    Registriert seit
    Mar 2004
    Beiträge
    1.772

    Verschachtelte Listennavigation

    So - habe ein wenig getüftelt - komme aber mal wieder nicht weiter. Wäre nett, wenn ihr mir noch ein wenig auf die Sprünge helfen könntet.

    Ausgehend von Dennis' Listenscript hab ichs jetzt verlinkt und so umgeschrieben, dass da eine semantisch korrekt verschachtelte Liste rauskommt (das Ganze wird noch zwischen <ul> und </ul> inkludiert, so dass die äußeren hier fehlen - nicht wundern):
    PHP-Code:
    <?
    // Hier wird die Navigation drin gespeichert!
    $navigation = array
    (
    "punkt1" => array
               (
                 
    "upunkt1a" => "punkt1-1",
                 
    "upunkt1b" => "punkt1-2"
               
    ),

    "punkt2" => array
                (
                 
    "upunkt2a" => "punkt2-1",
                 
    "upunkt2b"   => "punkt2-2"
                
    ),

    "punkt3" => "punkt3"
    );

    $selection $_GET['section']; //ist so natürlich Quatsch - aber wie gehts richtig?


    function draw_navi$array$selection )
    {
    foreach( 
    $array as $name => $sub )
    {
      echo 
    "<li>";
      if( 
    is_Array$sub ) )
      {
       echo 
    "<a href=\"index.php?section=$name\">$name</a>";

       if( 
    $selection == $name ):
       echo 
    "<ul>";
       foreach( 
    $sub as $sname => $ssub )
       {
        echo 
    "<li><a href=\"index.php?section=$ssub\">$sname</a></li>"
       }
       echo 
    "</ul>";
       endif;
      }else
       echo 
    "<a href=\"index.php?section=$name\">$name</a>";
       echo 
    "</li>";
    }
    }

    draw_navi$navigation$selection );

    ?>
    So - bleiben zwei Fragen:

    - Was schreibe ich hier hin: $selection = $_GET['section'];
    Wie also kann ich dem Server klarmachen, dass dort immer der 1. Wert des Hauptarrays hinsoll?

    - tja, und wie deklarier ich jetzt noch den jeweils aktiven Menüpunkt mit einer extra-Klasse? Für eine einfache Liste hab ich das ja schon - bekomme das aber nicht in diese verschachtelte reingebaut...

    Wär nett, wenn mir noch mal jemand weiterhelfen könnte...
    Grüße, Terry

  2. #2
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    Was schreibe ich hier hin: $selection = $_GET['section'];
    Ist doch richtig Verschönern lässt sich das mit

    $selection = isset( $_GET['section'] ) ? $_GET['section'] : 'home';

    Wie also kann ich dem Server klarmachen, dass dort immer der 1. Wert des Hauptarrays hinsoll?
    Der soll da gar nicht hin
    Du wolltest es ja so haben, dass nur die aktuelle Kathegorie offengeklappt wird. Mit $selection teilst du der Funktion also lediglich mit, welche Kathegorie der Navigation er öffnen soll!
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  3. #3
    TP-Veteran Terry hilft, wo's geht Terry hilft, wo's geht Terry hilft, wo's geht Avatar von Terry
    Registriert seit
    Mar 2004
    Beiträge
    1.772
    Ja, aber wenn ein Unterpunkt aufgerufen wird, dann erscheint der nicht mehr in der Navigation.

    Der soll aber bleiben. Also:

    punkt1
    punkt2
    unterpunkt2a
    unterpunkt2b
    punkt3

    soll da auch dann stehen, wenn Unterpunkt 2a angeklickt wurde.
    Grüße, Terry

  4. #4
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    du sollst den unterpunkt ja auch mit index.php?section=hauptgruppe&untergruppe=trallala aufrufen
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  5. #5
    TP-Veteran Terry hilft, wo's geht Terry hilft, wo's geht Terry hilft, wo's geht Avatar von Terry
    Registriert seit
    Mar 2004
    Beiträge
    1.772
    Gut - geht jetzt (hatte ich vorhin auch schon mal probiert- aber da war dann noch ein anderer Fehler drin).
    Vielen Dank Dir schon mal, Dennis.

    Bleibt also noch das Markieren des aktiven Punktes - wie geh ich das jetzt noch an?
    Grüße, Terry

  6. #6
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    per css?

    ul li ul{
    background-color: #f00000;
    }

    Oder du gibst dem Ding gleich nen Namen^^
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  7. #7
    TP-Veteran Terry hilft, wo's geht Terry hilft, wo's geht Terry hilft, wo's geht Avatar von Terry
    Registriert seit
    Mar 2004
    Beiträge
    1.772
    Mit ul ul li a kannst Du nur alle Unterpunkte gleichzeitig ansprechen - aber nicht den aktiven Punkt, auf dem Du Dich gerade befindest.

    Idealerweise möchte ich folgendes:

    Der aktive Punkt ist nicht klickbar, sondern ein einfacher Listenpunkt. Außerdem eben mit einer Klasse (class="active") versehen und mit title...
    Müßte also schon per PHP-Script extra definiert werden.

    Mit einer einfachen Liste geht es z.B. so:
    PHP-Code:
    $navigation= array (
        "punkt1" =>"Punkt 1",
        "punkt2" =>"Punkt 2",
        "punkt3" =>"Punkt 3"
    );



    while(list($key, $val) = each($navigation)) {
        if ($_GET['section'] == $key) { ?>
    <li class="active" title="Hier bist Du gerade."><?php
        
    echo $val
    ?>
    </li>
    <?php
        
    } else {
    ?><li><a href="<?php
        
    echo 'index.php?section='.$key .'">'$val
    ?>
    </a></li><?php
        
    }
    }
    Nur wie wendet man sowas jetzt auf die verschachtelte Liste an?
    Grüße, Terry

  8. #8
    TP-Veteran Terry hilft, wo's geht Terry hilft, wo's geht Terry hilft, wo's geht Avatar von Terry
    Registriert seit
    Mar 2004
    Beiträge
    1.772
    Hmm...

    ist das tatsächlich so schwierig oder stehe ich nur auf dem Schlauch?
    Grüße, Terry

  9. #9
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    Du stehst vor dem Schau
    Welche Variable ist bei dir denn für die Untergruppe zuständig?
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  10. #10
    TP-Veteran Terry hilft, wo's geht Terry hilft, wo's geht Terry hilft, wo's geht Avatar von Terry
    Registriert seit
    Mar 2004
    Beiträge
    1.772
    Die heißt dann art - wäre also $_GET['art'].

    Nur ist die aktive Seite ja mal $_GET['section'] und falls vorhanden, dann $_GET['art'].

    Hmm.. müßte man also abfragen, ob $_GET['art'] vorhanden ist.

    Sowas in der Art?:
    PHP-Code:
    if ( isset ( $_GET['art'] ) )
      {
       echo 
    "<li class="active" title="hier bist Du gerade">$sname</li>";
      }
    elseif (isset ( 
    $_GET['section'] ) )
      {
       echo 
    "<li class="active" title="hier bist Du gerade">$name</li>";
      }
    else ... 
    //sollte ja eigentlich nicht vorkommen - was macht man da? 
    Wo kommt das dann hin? - wie muß ich sowas einschachteln?
    Grüße, Terry

  11. #11
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    In der inneren Foreach Schleife - halt dort - wo die Untergruppe angezeigt wird!
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  12. #12
    TP-Veteran Terry hilft, wo's geht Terry hilft, wo's geht Terry hilft, wo's geht Avatar von Terry
    Registriert seit
    Mar 2004
    Beiträge
    1.772
    So - jetzt sieht es so aus:

    PHP-Code:
    <?
    // Hier wird die Navigation drin gespeichert!
    $navigation = array
    (
    "punkt1" => array
               (
                 
    "upunkt1a" => "upunkt1a",
                 
    "upunkt1b" => "upunkt1b"
               
    ),

    "punkt2" => array
                (
                 
    "upunkt2a" => "punkt2-1",
                 
    "upunkt2b"   => "punkt2-2"
                
    ),

    "punkt3" => "punkt3"
    );

    $selection = isset( $_GET['section'] ) ? $_GET['section'] : 'home';


    function 
    draw_navi$array$selection )
    {
    foreach( 
    $array as $name => $sub )
    {
      echo 
    "<li>";
      if( 
    is_Array$sub ) )
      {
       echo 
    "<a href=\"index.php?section=$name\">$name</a>";

       if( 
    $selection == $name ):
       echo 
    "<ul>";
       foreach( 
    $sub as $sname => $ssub )
        if ( isset ( 
    $_GET['art'] ) )
          {
            echo 
    "<li class=\"active\" title=\"hier bist Du gerade\">$sname</li>";
          }
    /*    elseif (isset ( $_GET['section'] ) )
          {
            echo "<li class=\"active\" title=\"hier bist Du gerade\">$name</li>";
          }*/
        
    else 
       {
        echo 
    "<li><a href=\"index.php?section=$name&art=$ssub\">$sname</a></li>"
       }
       echo 
    "</ul>";
       endif;
      }else
       echo 
    "<a href=\"index.php?section=$name\">$name</a>";
       echo 
    "</li>";
    }
    }

    draw_navi$navigation$selection );

    ?>
    Dabei werden leider beide Unterpunkte gleichzeitig ohne Link und mit class und title versehen. Und das auskommentierte geht an der Stelle gar nicht - da sonst die Unterpunkte nicht erscheinen.

    Hmm.. wie jetzt weiter?
    Grüße, Terry

  13. #13
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    isset ( $_GET['art'] )
    http://php.net/isset

    Das wird deine Frage beantworten! Isset überprüft nur, ob die Variable existiert. Das trifft ja keinerlei Aussage darüber, welchen Link er jetzt "highlighten" soll!

    du brauchst ja wenn schon sowas alla

    isset( $_GET["art"] ) && $_GET["art"] == aktuellePositionInDerNavigation
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  14. #14
    TP-Veteran Terry hilft, wo's geht Terry hilft, wo's geht Terry hilft, wo's geht Avatar von Terry
    Registriert seit
    Mar 2004
    Beiträge
    1.772
    Ja, das leuchtet ein.

    Ich hab jetzt sowas probiert, aber das geht auch nicht:

    PHP-Code:
    if (isset( $_GET["art"] ) && $_GET["art"] == $sname
    Wie kann ich die aktuelle Seite definieren?
    Grüße, Terry

  15. #15
    Guest Strogij hilft, wo's geht Strogij hilft, wo's geht
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    Ich störe zwar ungern, aber das ist in meinen Augen ein Spaghetti Code. Der ist kompliziert und nicht wiederverwendbar. Weshalb hat man denn OOP erfunden? Eine kleine Klasse mit Methoden für das Updaten und Anlegen so einer Liste inkl. der zusätzlichen Infos und Indexen aus dezimalen Zahlen, womit man auch besser rechnen kann wäre viel übersichtlicher und würde sogar einen ungeduldigen Coder befriedigen. Bei jeder kleinen Änderung muss in diesem Fall damit gerechnet werden, dass die ganze Arbeit umsonst war und man die Hälfte umschreiben muss. Also nei, so macht man sich nur eine zusätzliche Arbeit.

+ Antworten
Seite 1 von 4 1 2 3 4 LetzteLetzte

Ähnliche Themen

  1. Verschachtelte Vorlagen - <body> ändern
    Von nochbunterstift im Forum Dreamweaver & andere Webeditoren
    Antworten: 0
    Letzter Beitrag: 18.06.2004, 23:39
  2. verschachtelte Tabellen
    Von Pixelmaster im Forum HTML & CSS
    Antworten: 2
    Letzter Beitrag: 21.03.2004, 21:05
  3. verschachtelte tabelle?
    Von g e k k o im Forum HTML & CSS
    Antworten: 4
    Letzter Beitrag: 21.02.2004, 15:00
  4. Alte DW4-Vorlage -> MX-Vorlage / optionaler Bereich / verschachtelte Vorlage
    Von uwe.h im Forum Dreamweaver & andere Webeditoren
    Antworten: 2
    Letzter Beitrag: 14.11.2002, 16:18
  5. eine oder verschachtelte Tabellen
    Von Parisienne im Forum Fireworks
    Antworten: 16
    Letzter Beitrag: 23.01.2002, 16:21

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51