Ergebnis 1 bis 7 von 7

Thema: Navigation mit "Big Dropdown"

  1. #1
    Contao-Nutzer
    Registriert seit
    29.01.2014.
    Beiträge
    10

    Standard Navigation mit "Big Dropdown"

    Ich stehe irgendwie echt auf dem Schlauch.

    Es geht um eine Dropdown-Navigation. Ein bestimmter Navigationspunkt soll statt eines normalen Dropdowns, ein größeres Dropdown-Menü erhalten, bei dem level 2 UND level 3 ausgegeben werden und zwar so, dass level 2 als Überschrift fungiert und die level 3 Unterpunkte drunter gelistet werden.

    HAUPTMENÜ | HAUPTMENÜ | HAUPTMENÜ

    DROPDOWN | BIG DROPDOWN | DROPDOWN

    ... | LEVEL 2 MENÜPUNKT |*LEVEL 2 MENÜPUNKT | LEVEL 2 MENÜPUNKT | ...
    ... | LEVEL 3 | LEVEL 3 | LEVEL 3
    ... | LEVEL 3 | LEVEL 3 | LEVEL 3
    ... | LEVEL 3 | LEVEL 3 | LEVEL 3


    Ich habe nun ein Navigations-Template nach dem folgendne Schema:

    PHP-Code:
    <?php if($this->level == "level_1") : ?>
    <div id="navi" class="light_bg">
    <div class="container">
        <div class="navi_toggle nodesktop"><span class="hidden">Menü</span></div>
        <nav>
        <ul class="<?php echo $this->level?>">
          <?php foreach ($this->items as $item): ?>
            <?php 
    $GLOBALS
    ['current_root_alias'] = $item['alias'];
    if (
    $item['isActive']): ?>
              <li class="<?php echo $item['class']; ?> <?php echo $item['alias']; ?>"><a href="<?php echo $item['href']; ?>" class="<?php echo $item['class']; ?>"><?php echo $item['link']; ?></a><?php echo $item['subitems']; ?></li>
            <?php else: ?>
              <li<?php if ($item['class']): ?> class="<?php echo $item['class']; ?> <?php echo $item['alias']; ?>"<?php endif; ?>><a href="<?php echo $item['href']; ?>" title="<?php echo $item['pageTitle'] ? $item['pageTitle'] : $item['title']; ?>"<?php if ($item['class']): ?> class="<?php echo $item['class']; ?>"<?php endif; ?><?php if ($item['accesskey'] != ''): ?> accesskey="<?php echo $item['accesskey']; ?>"<?php endif; ?><?php if ($item['tabindex']): ?> tabindex="<?php echo $item['tabindex']; ?>"<?php endif; ?><?php if ($item['nofollow']): ?> rel="nofollow"<?php endif; ?><?php echo $item['target']; ?>><?php echo $item['link']; ?></a><?php echo $item['subitems']; ?></li>
            <?php endif; ?>
          <?php endforeach; ?>
        </ul>
        </nav>
    </div>
    </div>
    <?php endif; ?>


    <?php if($this->level == "level_2") : ?>
        <?php echo $GLOBALS['current_root_alias']; ?>
        <ul class="dropdownnavi <?php echo $this->level?>">
          <?php foreach ($this->items as $item): ?>
            <?php if ($item['isActive']): ?>
              <li class="<?php echo $item['class']; ?>"><a href="<?php echo $item['href']; ?>" class="<?php echo $item['class']; ?>"><?php echo $item['link']; ?></a><?php if($GLOBALS['current_root_alias'] == 'bereiche') { echo $item['subitems']; } ?></li>
            <?php else: ?>
              <li<?php if ($item['class']): ?> class="<?php echo $item['class']; ?>"<?php endif; ?>><a href="<?php echo $item['href']; ?>" title="<?php echo $item['pageTitle'] ? $item['pageTitle'] : $item['title']; ?>"<?php if ($item['class']): ?> class="<?php echo $item['class']; ?>"<?php endif; ?><?php if ($item['accesskey'] != ''): ?> accesskey="<?php echo $item['accesskey']; ?>"<?php endif; ?><?php if ($item['tabindex']): ?> tabindex="<?php echo $item['tabindex']; ?>"<?php endif; ?><?php if ($item['nofollow']): ?> rel="nofollow"<?php endif; ?><?php echo $item['target']; ?>><?php echo $item['link']; ?></a><?php if($GLOBALS['current_root_alias'] == 'bereiche') { echo $item['subitems']; } ?></li>
            <?php endif; ?>
          <?php endforeach; ?>
        </ul>
    <?php endif; ?>


    <?php if($this->level == "level_3") : ?>

        <ul class="bigdropdownnavi <?php echo $this->level?>">
          <?php foreach ($this->items as $item): ?>
            <?php if ($item['isActive']): ?>
              <li class="<?php echo $item['class']; ?>"><a href="<?php echo $item['href']; ?>" class="<?php echo $item['class']; ?>"><?php echo $item['link']; ?></a><?php echo $item['subitems']; ?></li>
            <?php else: ?>
              <li<?php if ($item['class']): ?> class="<?php echo $item['class']; ?>"<?php endif; ?>><a href="<?php echo $item['href']; ?>" title="<?php echo $item['pageTitle'] ? $item['pageTitle'] : $item['title']; ?>"<?php if ($item['class']): ?> class="<?php echo $item['class']; ?>"<?php endif; ?><?php if ($item['accesskey'] != ''): ?> accesskey="<?php echo $item['accesskey']; ?>"<?php endif; ?><?php if ($item['tabindex']): ?> tabindex="<?php echo $item['tabindex']; ?>"<?php endif; ?><?php if ($item['nofollow']): ?> rel="nofollow"<?php endif; ?><?php echo $item['target']; ?>><?php echo $item['link']; ?></a></li>
            <?php endif; ?>
          <?php endforeach; ?>
        </ul>
        
    <?php endif; ?>

    Ich hatte nun versucht den Alias aus Level 1 auch in der Darstellung von Level 2 verfügbar zu machen. Dann könnte ich dort die dritte Ebene freischalten und entsprechend ausgeben. Leider gelingt mit das trotz Einsatz von globalen Variablen nicht. Wieso?!

  2. #2
    Contao-Urgestein
    Registriert seit
    10.07.2010.
    Beiträge
    4.403
    User beschenken
    Wunschliste

    Standard

    Guck doch mal bei den Erweiterungen wie z.Bsp. Megamenu ob damit weiter kommst.

    Eine gute Suche gibt es hier:
    http://www.contao-pool.de/ceris.html

  3. #3
    Gesperrt
    Registriert seit
    23.06.2009.
    Ort
    Rheinfelden
    Beiträge
    322

    Standard

    Das kann man doch mit dem ganz normalen unveränderten Navigationstemplate lösen, die Ausgabe von Level 2 und 3 gleichzeitig und deren jeweilige Formatierung ist nur eine Sache von CSS...

  4. #4
    Contao-Nutzer
    Registriert seit
    29.01.2014.
    Beiträge
    10

    Standard

    Ich hab mein Navi-Template noch mal neu angelegt. Ich glaube, dass ich noch nicht ganz verstehe wie Contao die Templates durchgeht. Also was genau passiert, wenn das Script an die Stelle mit den Subitems kommt. Jetzt geht es jedenfalls so wie gewünscht. Ich musste mir zwar die Seitenaliase als class mit ausgeben um den einen Sonderfall entsprechend zu formatieren, aber seis drum.

    Danke!!

  5. #5
    Contao-Urgestein
    Registriert seit
    10.07.2010.
    Beiträge
    4.403
    User beschenken
    Wunschliste

    Standard

    Ich glaube, dass ich noch nicht ganz verstehe wie Contao die Templates durchgeht.
    Bei einigen Modulen/Elementen kannst/musst Du die Vorlage auswählen. Bei anderen nicht. Contao guckt zuerst immer im /templates ob da was vorhanden ist. Wenn nicht werden die Systemeigenen Vorlagen genommen. Update sicher anpassen tust über das BE im bereich Templates.

    Im Theme Manager kannst Du die Templates mit dem Theme verknüpfen damit sie bei einem allfälligen Export auch mitkopiert werden.

    .xml .html5 ist für das entsprechende Seitenformat welches Du im Seitenlayout einstellen kannst.

  6. #6
    Contao-Nutzer
    Registriert seit
    29.01.2014.
    Beiträge
    10

    Standard

    Danke ciaobello!
    Mit dem grundsätzlichen Anpassen der Templates komme ich soweit zurecht. Was ich nicht verstehe: Wie verarbeitet Contao die Templates?

    PHP-Code:
    <ul class="<?php echo $this->level?>" style="margin-left: 20px;">
      <?php foreach ($this->items as $item): ?>
        <?php if ($item['isActive']): ?>
          <li class="<?php echo $item['class']; ?>"><span class="<?php echo $item['class']; ?>"><?php echo $item['link']; ?></span><?php echo $item['subitems']; ?></li>
        <?php else: ?>
          <li<?php if ($item['class']): ?> class="<?php echo $item['class']; ?>"<?php endif; ?>><a href="<?php echo $item['href']; ?>" title="<?php echo $item['pageTitle'] ? $item['pageTitle'] : $item['title']; ?>"<?php if ($item['class']): ?> class="<?php echo $item['class']; ?>"<?php endif; ?><?php if ($item['accesskey'] != ''): ?> accesskey="<?php echo $item['accesskey']; ?>"<?php endif; ?><?php if ($item['tabindex']): ?> tabindex="<?php echo $item['tabindex']; ?>"<?php endif; ?><?php if ($item['nofollow']): ?> rel="nofollow"<?php endif; ?><?php echo $item['target']; ?>><?php echo $item['link']; ?></a><?php echo $item['subitems']; ?></li>
        <?php endif; ?>
      <?php endforeach; ?>
    </ul>
    Also ich verstehe die Abfragen und so weiter, aber woher weiß ich, dass beim Aufruf von <?php echo $item['subitems']; ?> das Template erneut durchlaufen wird?
    Das war mir anfangs nicht so klar. Und ich hatte in dem Navi-Template Parts für level_1, level_2 usw.

  7. #7
    Contao-Urgestein
    Registriert seit
    10.07.2010.
    Beiträge
    4.403
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von sh_kai
    aber woher weiß ich, dass beim Aufruf von <?php echo $item['subitems']; ?> das Template erneut durchlaufen wird?
    Dein "subitems" steht zwischen if & else und wurde mit foreach loop (wiederholung) eingeleitet.

    http://www.w3schools.com/php/php_looping_for.asp

    Soviel mal zu meinen verrosteten Programmier-Kenntnissen die mit Cobol angefangen und mit einer uralt php Version aufgehört haben

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •