zahi: floating

hallo ich brauch will mir eine ribbonbar aufbauen nur im unter menu sollen aber nur 3 links angezeigt werden und danach recht weiter aufgelistet werden

  
  
 foreach($page as $s_page)  
            {  
                if($this->navigation()->accept($s_page))  
                {  
                    $isActive = $s_page->isActive(true);  
                    $liClass = $isActive ? ' class="active"' : '';  
                    $link = $this->menu()->htmlify($s_page);  
                    if(isset($s_page->icon))  
                    {  
                        $icon = '<img src="/img/' . $s_page->icon . '"alt="'  
                              . $this->translate($s_page->getLabel()).'"/>';  
                        $link = str_replace('">', '">'.$icon, $link);  
                    }  
                    echo '            <li' . $liClass . '>' . $link.'</li>',                       PHP_EOL;  
                }  
            }  
            echo '        </ul>', PHP_EOL, '	</li>', PHP_EOL;  
  
  
  
  
  

das war der code und in html sieht das ganze so aus

  
 <li class="ribbonBox"><div class="ribbonHeading active">test</div>  
        <ul class="clearfix">  
            <li><a href="">test1</a></li>  
            <li><a href="">test2</a></li>  
            <li><a href="">test3</a></li>  
            <li><a href="">test4</a></li>  
            <li><a href="">test5</a></li>  
        </ul>  
  
  

und meine frage ist wie breche ich nach dem 3ten link ab und füge eine neue "box" daneben hinzu

  1. Wie wärs, wenn du beim literator prüfst, ob dieser modulo 3 ist und dann einfach das aktuelle ul schließt und ein neues beginnst. diese elemente kannst du dann mit float einfach nebeneinander positionieren.

    Wäre so mein ansatz.

    1. beim literator ?
      wie kann ich den überprüfen ob der die ul 3 mal ausführt ?
      den die div schliesse ich ja schon früher

      1. Hi zahi!

        beim literator ?

        Gemeint ist ein Iterator (Zähler), zB:

          
        $i = 0; //Iterator  
        echo "<ul>";  
        foreach($foo as $bar){  
         if ($i == 2){ // wird ausgeführt, wenn 3 hochgezählt wurde  
          echo "<li>bla</li>";  
          echo "</ul><ul>";  
          $i = 0;  
         } else {  
          echo "<li>bla</li>";  
          $i++  
         }  
        }  
        echo "</ul>";  
        
        

        Sinnvoll wäre noch eine Kontrolle, ob das Ende aller Einträge in $foo zufällig mit $i == 2 zusammenfällt, ansosnten generiert es so ein leeres <ul></ul> am Ende. Dafür tut sicher count($foo) seinen dienst.

        wie kann ich den überprüfen ob der die ul 3 mal ausführt ?

        Iterator hochzählen, bei jedem Durchlauf überprüfen ob er die gewünschte Anzahl erreicht, wenn ja, den Iterator wieder nullen und die Liste abschließen.
        Die Listen dann, wie bereits geschrieben, mittels http://de.selfhtml.org/css/eigenschaften/positionierung.htm#float@title=float nebeneinander packen.

        tschau
        ichen

        --
        Ichen