[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Submenu aufteilen, nach 3 li neue ul - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
killray
Beiträge: 8
Registriert: 12. Jul 2009, 23:58
Kontaktdaten: ICQ

Submenu aufteilen, nach 3 li neue ul

13. Jul 2009, 00:07

Hi,

bin gerade dabei, mit Hilfe des Raybeam YAML Frameworks eine Seite zu bauen. Nun ist mir in den Sinn gekommen, die Subnavi in ein begrenzt hohes Div unterzubringen. Dazu müsste die Navi nach 3 Sub-Listenpunkten automatisch umbrechen, respektive eine neue Liste anlegen. Wie kann ich dies am einfachsten bewerkstelligen. Mit php und einer if listenpunkte <4 then neue ul müsste das ja gehen, aber das wars dann mit meinen Kenntnissen :).

Der Code der Navi kann unter folgendem Link eingesehen werden, da er recht lang ist:

http://raybeam.de/16-0-yamlnavigation.html

[Edit] Alternativ würde mir auch eine Lösung mit rex factory reichen :-)

helpmeplease
Beiträge: 21
Registriert: 22. Jul 2007, 19:27

14. Jul 2009, 13:59

einfach in der schleife einen counter hochzählen und dann mit deiner if abfragen ...

Code: Alles auswählen

$i=0;
foreach ($l as $v) {
  if ($i < 4) {
      //mach was
  }
  //mach was
 $i++;
}

killray
Beiträge: 8
Registriert: 12. Jul 2009, 23:58
Kontaktdaten: ICQ

14. Jul 2009, 15:04

Öh, leider hilf mir das noch nicht so weiter, aber danke schonmal :-).

Wo sollte ich das ansetzen, es ist die extra funktion?

Code: Alles auswählen

// Nur Submenue des aktuellen Root anzeigen
        if($subUl=='on' || $subUl=='off' || $subUl=='extra')
        {
          if($nav->getId()==$path[$pathIndex])
          {
            // Namen der aktuellen root-Kategorie als Titel fuer
            // das Submenue uebernehmen
            if($pathIndex==1)
            {
              $subNavigation='';
            }

            // Durch ...->getChildren(1) anstatt ...->getChildren() werden
            // nur Kategorien durchlaufen die "online" sind
            if($nav->getChildren(1) && $pathIndex<2) 
            {
              if((count($path) > $pathIndex) && ($path[$pathIndex + 1] > 0))
                {
                  if($pathIndex>1 && $subUl=='extra')
                  {
                    $subNavigation.='<li'.$oStyleID.$oStyleClass.'><a href="'.$nav->getUrl().'">'.$nav->getName().'</a>';
                  }
                  else
                  {
                  if($oStyleID==' class="active"')$oStyleID='';
                    $navigation.='<li'.$oStyleID.$oStyleClass.'><a href="'.$nav->getUrl().'">'.$nav->getName().'</a>';
                  }
                }
                else
                {
                  // bei 'extra' wuerde der root-Navigationspunkt ins submenue verschoben, soll er aber nicht
                  if($pathIndex>1 && $subUl=='extra')
                  {
                    $subNavigation.='<li'.$oStyleID.$oStyleClass.'><a  href="'.$nav->getUrl().'">'.$nav->getName().'</a>';
                  }
                  else
                  {
                    $navigation.='<li'.$oStyleID.$oStyleClass.'><a href="'.$nav->getUrl().'">'.$nav->getName().'</a>';
                  }
                }
                // Wenn keine untergeordneten <ul>-Tags im Menue verwendet
                // werden sollen ($subUl='off'), wird der <li>-Tag geschlossen
          if($subUl=='off')
                {
                  $navigation.= '</li>'."\n";
                }
                // Wenn untergeordnete <ul>-Tags im Menue verwendet
                // werden sollen ($subUl='on'), wird in dem noch offenen
                // <li>-Tag der <ul>-Tag geoeffnet
                else
                {
                  if($pathIndex>1 && $subUl=='extra')
                  {
                    $subNavigation.= "\n<ul class=\"subnav".$pathIndex."\">\n";
                  }
                  else
                  {
                    $navigation.= "\n<ul class=\"subnav".$pathIndex."\">\n";
                  }
                }
                // Durch ...->getChildren(1) anstatt ...->getChildren() werden
                // nur Kategorien durchlaufen die "online" sind - dazu wird die
                // Funktion erneut aufgegrufen
                foreach($nav->getChildren(1) as $sub)
                {
                  $tmpNav=build_navigation($feUser, $sub, $path,$subUl, $pathIndex+1);
                  $navigation.=$tmpNav[0];
                  $subNavigation.=$tmpNav[1];
                }
                // Wenn untergeordnete <ul>-Tags im Menue verwendet
                // werden sollen ($subUl='on'), wird der <ul>-Tag hier wieder geschlossen
                if($subUl=='on' || $subUl=='extra')
                {
                  if($pathIndex>1 && $subUl=='extra')
                  {
                    $subNavigation.="</ul>\n";
                  }
                  else
                  {
                    $navigation.="</ul>\n";
                  }
                }
              }
              else
              {
          if($pathIndex>1 && $subUl=='extra')
          {
                $subNavigation.='<li'.$oStyleID.$oStyleClass.'><a class="level'.$pathIndex.' active" href="'.$nav->getUrl().'">'.$nav->getName().'</a>';
              }
              else
              {
                $navigation.='<li'.$oStyleID.$oStyleClass.'><a href="'.$nav->getUrl().'">'.$nav->getName().'</a>';
              }

          if($subUl=='off')
              {
                $navigation.= '</li>'."\n";
              }
              }
            }
            else
        {
        if($pathIndex>1 && $subUl=='extra')
        {
          $subNavigation.='<li'.$oStyleClass.'><a href="'.$nav->getUrl().'">'.$nav->getName().'</a>';
        }
        else
        {
          $navigation.='<li'.$oStyleClass.'><a href="'.$nav->getUrl().'">'.$nav->getName().'</a>';
        }
oder hier

Code: Alles auswählen

// Durch ...::getRootCategories(1) anstatt ...::getRootCategories()
// werden nur die Root-Kategorien durchlaufen die "online" sind
$navi=array();
foreach (OOCategory::getRootCategories(1) as $nav)
{
  $navi=build_navigation($feUser, $nav, $path, $subUl);
  $navMain.=$navi[0];
  $navSub.=$navi[1];
}

$cssClsV = 'class="vlist"';
$cssClsH = 'class="hlist"';

if($subUl=='extra')
{
  $navigation= "<div ".$cssClsH.">\n  <ul> \n".$navMain."</ul>\n</div>\n";
}
else
{
  $navigation= "<div ".$cssClsV.">\n  <ul> \n".$navMain."</ul>\n</div>\n";
}

if($navSub)
{
  $subNavigation= "<div ".$cssClsV.">\n  <ul>\n".$navSub."</ul>\n</div>\n";
}

Zurück zu „Allgemeines [R4]“