dynamische navigation

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • dynamische navigation

    hallo,

    ich muss eine projekt mit ca. 100 seiten bauen (ohne db).
    jetzt versuche ich gerade eine navigations struktur zu basteln.
    der aufbau der seite sieht in etwa so aus:
    PHP-Code:

    home
    seite1 
    unterpunkt1       -      unterpunkt2
                  
    |                        |
              
    useite1useite2        useite1useite2  useite3
    seite2
    seite3 
    unterpunkt1       -      unterpunkt2
                  
    |                        |
              
    useite1useite2        useite1useite2  useite3 
    die zweite und dritte navigationseben soll aber nur auf den entsprechenden seiten auftauchen.
    wie löse ich das am besten??
    bastele ich mir arrays mit den navigationspunkten zusammen zusammen??

    oder lege ich mir besser eine ordnerstruktur an, die ich beim seitenaufruf auslese.

    danke vorab

  • #2
    würde eher zu einem array tendieren, denn du musst bedenken, dass es vorkommen kann, dass seiten und dateien zwar in der struktur liegen, aber evtl nicht in der navigation auftauchen sollen - was beim auslesen nachher zu langen if else geschichten führen kann...
    **********
    arkos
    **********

    Kommentar


    • #3
      danke für deine antwort.
      ich denke da hast du recht.

      wie sollte das denn am besten aussehen?
      ich dachte an sowas in der richtung:


      PHP-Code:
      $nav[]    = array("url" => "index.php""name" => "Home");
      $nav[]    = array("url" => "seite1.php""name" => "Seite1",
                        
      "sub" => array(array("url" => "useite1.php""name" => "Useite1")
                                       array(
      "url" => "useite2.php""name" => "useite2"))
                        );

      //usw 
      jetzt habe ich aber einige probleme mit dem auslesen.
      die subnavigation einzublenden wenn ich auf seite1.php bin geht ja noch aber wie mache ich das am besten useite1.php? vorallem weil ich dann den punkt seite1 auf aktive (bold) stellen möchte.
      ich hatte mir überlegt, das über den scriptnamen abzufragen. dann müsste ich aber bei jedem navigationspunkt das komplette array durchlaufen lassen.
      oder wie löse ich das am besten??

      Kommentar


      • #4
        Der nächste bitte:
        http://www.php-resource.de/forum/sho...che+navigation

        Kommentar


        • #5
          ja das hatte ich schon gelesen.
          mir ging es jetzt eher um das auslesen der arrays.

          Kommentar


          • #6
            Warum dann ein neuer Thread? Basiert doch genau auf dem vorangegangen...

            Was ist denn dein konkretes Problem?

            Kommentar


            • #7
              mein hauptproblem liegt darin, dass array vernünftig auszulesen.
              wenn ich die struktur wie oben habe möchte ich herausfinden, ob die
              aktuelle seite in z.b. $navi[1] enthalten ist.
              ich habe ja in meinem array wieder ein array usw.
              ich versuche gerade das mit einer schleife zu machen. hänge aber irgendwie. die funktioin funktioniert bei den unterseiten nicht mehr.
              klar, sie ruft sich zwar selber wieder auf liefert aber vorher false zurück. außerdem frage ich mich, ob das nicht zu performance lastig ist.

              PHP-Code:
              function arraySearch($arr$n)
              {
                  
              //print_r($arr);
                  
              foreach($arr as $key => $val)
                  {
                     if(
              is_array($val))
                     {
                        
              arraySearch($val$n);
                     }
                     else
                     {
                       if(
              $val == $n)
                       {
                              return 
              true;
                       }
                     }  
                  }
                  return 
              false;

              Kommentar


              • #8
                Kommt drauf an, wie viele Ebenen du hast. Bei bis zu drei-vier würde ich das mit der Rekursion im Array noch locker akzeptieren.

                Wenn du mehr seiten und ebenen hast, wäre das ganze mit einem anderen Modell (nested Sets, menu menu) zu lösen.

                welchen wert hat n?

                foreach($arr as $key => $val)
                Das ist vermutlich schon falsch. $arr ist = $nav, oder?

                Kommentar


                • #9
                  $n enthält den aktuellen pagenamen. z.b. index.php

                  $arr = $nav[0] //oder $nav[1] etc.

                  ich rufe die funktion schon aus einer for-schleife aus auf. in der wollte ich die navigation zusammenbauen.

                  ich habe max. 3 navigationsebenen obei die zweite max vier
                  unterpunkte haben kann. die aber in der dritten ebene jewails
                  20 unterpunkte haben kann.

                  Kommentar


                  • #10
                    wenn die struktur nicht all so groß wird, recht doch ein Array!

                    Machst eine ID und eine Parent-ID und bei der Ausgabe lässt du es rekursiv durchlaufen...

                    Kommentar


                    • #11
                      Original geschrieben von TriphunEM
                      Machst eine ID und eine Parent-ID und bei der Ausgabe lässt du es rekursiv durchlaufen...
                      wie meinst du das mit den id's?
                      die funktion gibt aber schon nach dem ersten durchlaf false zurück.
                      Zuletzt geändert von kakktus; 25.10.2007, 14:19.

                      Kommentar


                      • #12
                        da kann mir wohl keiner helfen

                        Kommentar


                        • #13
                          Original geschrieben von kakktus
                          da kann mir wohl keiner helfen

                          was erwartest du innerhalb von 2 stunden? 10000 antworten? Nicht jeder hier hat 24/7 zeit...
                          Freedom is a state of mind. Not a state in which we live.

                          troxdev.ch | animefieber

                          Kommentar


                          • #14
                            *tztzt* drängel... Ich guck vielleicht morgen noch mal hier rein. Wenn du 24/7 Support haben möchtest, gibts gerne ne Kontonummer.

                            Kommentar


                            • #15
                              drängeln wollte ich bestimmt nicht.

                              für ein wenig hilfe wäre ich trotzdem sehr dankbar

                              Kommentar

                              Lädt...
                              X