Listen-Navigation (mit Tpl)

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

  • Listen-Navigation (mit Tpl)

    Hallo, hat schon mal einder von euch eine Listennavigation
    <ul><li>.. programmiert?


    Ich bräuchte ein Script was mir aus einem Array ne nette Liste darstellt.

    Funktionen:
    Aktive Pfade, Max Tiefe, Aktives Item ....


    Quasi wie das hier:
    http://help.der-dirigent.de/index.ph...ten-Navigation
    thx Mukraker

  • #2
    ist das ein Gesuch, ne Projekthilfe, Off Topic oder hast du schon ansätze?

    Kommentar


    • #3
      ein gesucht würde ich sagen.

      Ansatz ist das Der-Dirigent Modul

      So in der Art hätte ich es gerne (muss nicht so komples).
      Habe mir den Code auch schon angeschaut, aber durch die ganzen CMS-Variablen ist das zu kompliziert
      thx Mukraker

      Kommentar


      • #4
        Ich hätte gemeint, dass du nach über 800 Postings den Weg nach "Gesuche" selbst gefunden hättest... *move*

        Kommentar


        • #5
          so ganz bekomme ich es noch nicht hin


          PHP-Code:
          <?php
          /*     name:vd($var, $line = "")
              return: var and line of function call*/
          function vd($var$line "")
          {
              
          //$var auf array checken
              
          if( is_array($var) OR is_object($var)) {
                  echo 
          "<hr><pre style=\"background-color:#FF8888\">line: $line<br />";
                  
          print_r($var);
                  echo 
          "</pre><hr>";
              } elseif(
          is_string($var)) {
                  echo 
          "<hr><p style=\"background-color:#FF8888\">line: $line<br />".$var."<p><hr>";
              } else {
                  echo 
          "<hr><p style=\"background-color:#FF8888\">line: $line<br />Inhalt der var:<br>".$var."<p><hr>";
              }
          }


          $navArray = array();
          $navArray[] = array("label" => "obst");
          //$navArray[0][] = array ("start" => false, "label" => "banane", "url" => "banane.html");    
          //$navArray[0][] = array ("start" => true, "label" => "apfel", "url" => "apfel.html");
          $navArray[1] = array("label" => "gemüse");
          $navArray[1][] = array ("start" => true"label" => "kartoffel""url" => "kartoffel.html");    


          // tempaltes
          $navTpl = array();
          $navTpl['start'] = '<ul> 
                                <li><a href="{$link}">{$label}</a>'
          ;
          $navTpl['end']= '</li></ul> ';
          $navTpl['layer']= '<ul>{$layer}</ul> ';
          $navTpl['page']= '<li><a href="{link}">{$label}</a></li>';
          $navTpl['pageactive']= '<li><a href="{link}" class="active">{$label}</a></li>';
          $navTpl['folder']= '<li><a href="{$link}" >{label}</a>{$folder}</li>';
          $navTpl['folderactive']= '<li><a href="{link}" class="active">{$label}</a>{$folder}</li>';


          // tmp array


          function showFolder($folder$navTpl) {
          $tmp "";    
              
          // haben wir wirklich ein array?
              
          if (is_array($folder)) {
                  
                  
          // loop array
                  
          $sub "";
                  foreach(
          $folder as $key => $subfolder) {
                      
          // gibt es weiter unterorder
                      
          if (is_array($subfolder[0]) ){
                          
          // folder label
                          
                          
          $sub "\n".showFolder($subfolder$navTpl);    
                          
          $tpl  .= str_replace('{$label}'$sub$navTpl['folder']);
                          
          // page label
                      
          } else {
                          
          //vd($subfolder['label']);
                          
          $sub .= str_replace('{$label}'$subfolder['label'], $navTpl['page']);
                      }
                  }        
                  
                  
          $tmp .= str_replace('{$layer}'$sub$navTpl['layer']);
                          
                  
              } else {
                  
          vd("Fehler: Kein Array übergeben");
              }
              return 
          $tmp;
          }


          echo 
          doNav($navArray$navTpl);
           
          function 
          doNav($navArray$navTpl
          {
              
          $nav ="";
              
          $nav .= $navTpl['start'];
              
          $nav .= showFolder($navArray$navTpl);
              
          $nav .= $navTpl['end'];
              
              echo 
          $nav;
          }


          vd($navArray);

          ?>
          thx Mukraker

          Kommentar


          • #6
            Navigation aus Array

            ich glaub das gehört ins dev. Forum

            Hallo, hat schon mal einder von euch eine Listennavigation
            <ul><li>.. programmiert?


            Ich bräuchte ein Script was mir aus einem Array ne nette Liste darstellt.

            Funktionen:
            Aktive Pfade, Max Tiefe, Aktives Item ....


            Quasi wie das hier:
            http://help.der-dirigent.de/index.ph...ten-Navigation


            bekomme es noch nicht


            PHP-Code:
            <?php
            /*     name:vd($var, $line = "")
                return: var and line of function call*/
            function vd($var$line "")
            {
                
            //$var auf array checken
                
            if( is_array($var) OR is_object($var)) {
                    echo 
            "<hr><pre style=\"background-color:#FF8888\">line: $line<br />";
                    
            print_r($var);
                    echo 
            "</pre><hr>";
                } elseif(
            is_string($var)) {
                    echo 
            "<hr><p style=\"background-color:#FF8888\">line: $line<br />".$var."<p><hr>";
                } else {
                    echo 
            "<hr><p style=\"background-color:#FF8888\">line: $line<br />Inhalt der var:<br>".$var."<p><hr>";
                }
            }


            $navArray = array();
            $navArray[] = array("label" => "obst");
            //$navArray[0][] = array ("start" => false, "label" => "banane", "url" => "banane.html");    
            //$navArray[0][] = array ("start" => true, "label" => "apfel", "url" => "apfel.html");
            $navArray[1] = array("label" => "gemüse");
            $navArray[1][] = array ("start" => true"label" => "kartoffel""url" => "kartoffel.html");    


            // tempaltes
            $navTpl = array();
            $navTpl['start'] = '<ul> 
                                  <li><a href="{$link}">{$label}</a>'
            ;
            $navTpl['end']= '</li></ul> ';
            $navTpl['layer']= '<ul>{$layer}</ul> ';
            $navTpl['page']= '<li><a href="{link}">{$label}</a></li>';
            $navTpl['pageactive']= '<li><a href="{link}" class="active">{$label}</a></li>';
            $navTpl['folder']= '<li><a href="{$link}" >{label}</a>{$folder}</li>';
            $navTpl['folderactive']= '<li><a href="{link}" class="active">{$label}</a>{$folder}</li>';


            // tmp array


            function showFolder($folder$navTpl) {
            $tmp "";    
                
            // haben wir wirklich ein array?
                
            if (is_array($folder)) {
                    
                    
            // loop array
                    
            $sub "";
                    foreach(
            $folder as $key => $subfolder) {
                        
            // gibt es weiter unterorder
                        
            if (is_array($subfolder[0]) ){
                            
            // folder label
                            
                            
            $sub "\n".showFolder($subfolder$navTpl);    
                            
            $tpl  .= str_replace('{$label}'$sub$navTpl['folder']);
                            
            // page label
                        
            } else {
                            
            //vd($subfolder['label']);
                            
            $sub .= str_replace('{$label}'$subfolder['label'], $navTpl['page']);
                        }
                    }        
                    
                    
            $tmp .= str_replace('{$layer}'$sub$navTpl['layer']);
                            
                    
                } else {
                    
            vd("Fehler: Kein Array übergeben");
                }
                return 
            $tmp;
            }


            echo 
            doNav($navArray$navTpl);
             
            function 
            doNav($navArray$navTpl
            {
                
            $nav ="";
                
            $nav .= $navTpl['start'];
                
            $nav .= showFolder($navArray$navTpl);
                
            $nav .= $navTpl['end'];
                
                echo 
            $nav;
            }


            vd($navArray);

            ?>
            thx Mukraker

            Kommentar


            • #7
              Scheint mir ein Crosspost zu sein.
              Und eine etwas ausführlichere Fehlerberschreibung täte auch ned schaden...

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Ein PHP Fehler gibt es nicht,.

                Problem ist, dass das Array nicht ordentlich als Liste dargestellt wird!
                thx Mukraker

                Kommentar


                • #9
                  yeaahhh es funzt - aber wer kann es optimieren?

                  PHP-Code:
                  function showFolder($folder$navTpl) {
                  $tmp "";    
                      
                  // new layer?
                      
                  if (is_array($folder)) {
                          
                          
                  // loop array
                          
                  $sub "";
                          foreach(
                  $folder as $key => $subfolder) {
                              
                  // hier muss ich noch unterscheiden ob es folder oder page ist
                              // folder?
                              
                  if (is_array($subfolder[0]) ){
                                  
                  // folder label
                                  
                  $subsub "\n".showFolder($subfolder$navTpl);    
                                  
                  $sub .= str_replace('{$folder}'$subsubstr_replace('{$label}'"Folder: ".$subfolder['label'], $navTpl['folder']));
                              
                  // last folder
                              
                  } elseif ($subfolder['type'] == "folder") {
                                  
                  $sub .= str_replace('{$label}'"Folder: ".$subfolder['label'], str_replace('{$folder}'""$navTpl['folder']));
                              
                  // page?
                              
                  } else {
                                  
                  // dont show the folder data
                                  
                  if (is_array($subfolder)) {
                                      
                  $sub .= str_replace('{$label}'"Page: ".$subfolder['label'], $navTpl['page']);
                                  }
                              }
                          }        
                          
                          
                  // new layer
                          
                  $tmp .= str_replace('{$layer}'$sub$navTpl['layer']);    
                      } else {
                          
                  vd("Fehler: Kein Array übergeben");
                      }
                      return 
                  $tmp;
                  }


                  echo 
                  doNav($navArray$navTpl);
                   
                  function 
                  doNav($navArray$navTpl
                  {
                      
                  $nav ="";
                      
                  $nav .= $navTpl['start'];
                      
                  $nav .= showFolder($navArray$navTpl);
                      
                  $nav .= $navTpl['end'];
                      
                      echo 
                  $nav;

                  thx Mukraker

                  Kommentar


                  • #10
                    es wird ..... unterstützung nehme ich gerne entgegen

                    aufruf:
                    PHP-Code:
                    <?php
                    include('navigation.class.php');

                    $navArray = array();
                    $navArray[] = array("label" => "obst""type" => "folder");

                    $navArray[0][1] = array ("start" => false"label" => "banane""url" => "banane.html");    
                    $navArray[0][0] = array ("start" => true"type"=> "page""label" => "apfel""url" => "apfel.html");

                    $navArray[0][2] = array ("start" => true"type"=> "folder""label" => "kiwis");
                    $navArray[0][2][] = array ("start" => true"type"=> "page""label" => "große""url" => "große.html");
                    $navArray[0][2][] = array ("start" => false"type"=> "page""label" => "kleine""url" => "kleine.html");


                    $navArray[1] = array("label" => "gemüse""type" => "folder");
                    $navArray[1][] = array ("start" => true"type" => "page""label" => "kartoffel""url" => "kartoffel.html"); 
                     
                    $navArray[2] = array("label" => "fleisch""type" => "folder");
                      
                    $url "obst/kiwis/kleine.html";


                    // tempaltes
                    $navTpl = array();
                    $navTpl['start'] = '<div>';
                    $navTpl['end']= '</div> ';
                    $navTpl['layer']= '<ul>{$layer}</ul> ';
                    $navTpl['page']= '<li><a href="{$link}">{$label}</a></li>';
                    $navTpl['pageactive']= '<li><strong><a href="{$link}" class="active">{$label}</a></strong></li>';
                    $navTpl['folder']= '<li><a href="{$link}" >{$label}</a>{$folder}</li>';
                    $navTpl['folderactive']= '<li><strong><a href="{$link}" class="active">{$label}</a></strong>{$folder}</li>';


                    $Navigation = new NAVIGATION($navArray$navTpl);
                    $Navigation->showEmptyFolder true;
                    $Navigation->setActive($url);
                    $Navigation->Display();

                    ?>

                    class:
                    PHP-Code:
                    <?php
                    class NAVIGATION 

                        var 
                    $url;
                        var 
                    $urlArray
                        var 
                    $page;
                        var 
                    $pathArray;
                        var 
                    $activeDepth 0;
                        var 
                    $showEmptyFolder;
                        
                        
                    // nav Tpl
                        
                    var $navTpl;
                        
                        
                    // nav/ folder Array
                        
                    var $navArray;
                        
                        public function 
                    Navigation($navArray$navTpl) {
                            
                    $this->navTpl $navTpl;
                            
                    $this->navArray $navArray;
                            
                    $this->urlArray = array();
                            
                    $this->pathArray = array();
                        }
                        
                        
                        private function 
                    _showFolder($folder) {
                            
                    $tmp "";    
                            
                    // new layer?
                            
                    if (is_array($folder)) {
                                
                                
                    // loop array
                                
                    $sub "";
                                foreach(
                    $folder as $key => $subfolder) {
                                    
                    // hier muss ich noch unterscheiden ob es folder oder page ist
                                    // folder?
                                    
                    if (is_array($subfolder[0]) ){
                                        
                    // folder label
                                        
                    $subsub "\n".$this->_showFolder($subfolder); 
                                        
                                        
                    // active foldeR?
                                        
                    if($subfolder['label'] == $this->pathArray[$this->activeDepth]) {
                                            
                    $this->activeDepth++;    
                                            
                    $sub .= str_replace('{$folder}'$subsubstr_replace('{$label}'"Folder: ".$subfolder['label'], $this->navTpl['folderactive']));
                                            
                    //increment path id
                                        
                    } else {
                                            
                    $sub .= str_replace('{$folder}'$subsubstr_replace('{$label}'"Folder: ".$subfolder['label'], $this->navTpl['folder']));
                                        }
                                    
                    // last folder
                                    
                    } elseif ($subfolder['type'] == "folder") {
                                        
                    // leere Ordner Zeigen?
                                        
                    if($this->showEmptyFolder == true) {
                                            
                    $sub .= str_replace('{$label}'"Folder: ".$subfolder['label'], str_replace('{$folder}'""$this->navTpl['folder']));
                                        }
                                    
                    // page?
                                    
                    } else {
                                        
                    // dont show the folder data
                                        
                    if (is_array($subfolder)) {
                                            
                    // active page
                                            
                    if($subfolder['url'] == $this->page) {
                                                
                    $sub .= str_replace('{$label}'"Page: ".$subfolder['label'], $this->navTpl['pageactive']);
                                            } else {
                                                
                    $sub .= str_replace('{$label}'"Page: ".$subfolder['label'], $this->navTpl['page']);
                                            }
                                        }
                                    }
                                }        
                                
                                
                    // new layer
                                
                    $tmp .= str_replace('{$layer}'$sub$this->navTpl['layer']);    
                            } else {
                                
                    vd("Fehler: Kein Array übergeben");
                            }
                            return 
                    $tmp;
                        }


                         
                        private function 
                    _doNav() 
                        {
                            
                    $activeDepth 0;
                            
                    $nav ="";
                            
                    $nav .= $this->navTpl['start'];
                            
                    $nav .= $this->_showFolder($this->navArray);
                            
                    $nav .= $this->navTpl['end'];
                            
                            echo 
                    $nav;
                        }
                        
                        public function 
                    display() 
                        {
                            return 
                    $this->_doNav();
                        }
                        
                        public function 
                    setActive($url
                        {
                            
                    $this->urlArray split("/"$url);
                            
                    $this->page array_pop($this->urlArray);
                            
                    $this->pathArray $this->urlArray;
                        }
                      
                    }
                    ?>
                    thx Mukraker

                    Kommentar

                    Lädt...
                    X