Ergebnis 1 bis 7 von 7

Thema: mod_navigation bearbeiten

  1. #1
    Contao-Nutzer
    Registriert seit
    09.02.2011.
    Beiträge
    24

    Standard mod_navigation bearbeiten

    Hallo,

    ich habe das mod_navigation.html5 Template mit einem umschließenden <div> erweitert, die Klasse des <div> soll als eventhandler für ein jquery plugin dienen.

    Nun steh ich aber vor dem Problem das dieses <div> eben nur um das <nav> der Main-Navigation soll, nicht um die der Custom-Navigation.
    Die mod_customnav, scheint also auf dem mod_navigation template zu basieren und hat kein eigenes template, sodass in diesem Fall alle Menüs auf der Seite mit eben diesem DIV ausgestattet werden.

    Es gibt im Backend nur leider keine Möglichkeit ein alternatives mod_navigation template für mein Menü auszuwählen, ich schätze das betrifft dann eh den core.
    Die Template-Auswahl für die Menü-Inhalte (nav_default) ist vorhanden, was aber wenn ich das ganze Modultemplate ändern möchte?

    Muss ich jetzt extra ein eigenes Modul schreiben, nur um mein <div> vor den <nav>-tag zu setzen oder gibt es da eine simplere Möglichkeit?

    Edit: Nur zur Erklärung warum ich das eigentlich will:
    Ich möchte einen Sticky-Header-Menü mit jquery bauen basierend auf diesem Artikel und dem jquery Plugin "Waypoints".

    Die Klasse des <div> um das es mir geht soll mit der .sticky class ersetzt werden, sodass mein Menü nicht mit weiter runter scrolled sondern oben fixiert wird.
    Contao wirft aber nur das <nav> tag aus wenn ein Menü generiert wird welches ich nicht manipulieren möchte. Als Waypoint würde <nav>-tag ausreichen. Zur css manipluation benötige ich aber das div.

    Mir ist auch schon der mögliche Weg über einen eigenen Layoutbereich in den Sinn gekommen, ich finde das auf die Weise aber irgendwie unschön, nur einen Layoutbereich für eben dieses Menü zu bauen.
    Geändert von jeykon (15.01.2013 um 14:14 Uhr)

  2. #2
    Contao-Fan Avatar von JMMB
    Registriert seit
    08.03.2012.
    Beiträge
    261
    User beschenken
    Wunschliste

    Standard Abfragen des Navigationstemplates in der mod_navigation

    Hi,

    du hast die Möglichkeit in der mod_navigation das Template abzufragen das Du der Navigation zugewiesen hast.
    Ist es z.B. nav_default kannst Du es so machen:
    PHP-Code:
    <?php
    if($this->navigationTpl == 'nav_default'){
    echo 
    '<div class="meineKLasse">';
    }
    ?>
    und dann dein Div mit der Klasse ausgeben. Für das schließende Div dann das gleiche. insgesamt sieht die mod_navigation dann so aus (html5):

    PHP-Code:
    <!-- indexer::stop -->
    <?php
    if($this->navigationTpl == 'nav_default'){
    echo 
    '<div class="meineKLasse">';
    }
    ?>
    <nav class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>
    <?php if ($this->headline): ?>
    <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>
    <a href="<?php echo $this->request?>#<?php echo $this->skipId?>" class="invisible"><?php echo $this->skipNavigation?></a>
    <?php echo $this->items?>
    <a id="<?php echo $this->skipId?>" class="invisible">[nbsp]</a>
    </nav>
    <?php
    if($this->navigationTpl == 'nav_default'){
    echo 
    '</div>';
    }
    ?>
    <!-- indexer::continue -->
    Jetzt wird das Div nur in der Navigation mit ausgegeben die das Template nav_default bekommen hat.
    Hoffe es hilft weiter.

    JMMB

  3. #3
    Contao-Nutzer
    Registriert seit
    09.02.2011.
    Beiträge
    24

    Standard VIELEN DANK

    Das ist wirklich genial. Ich bin mit den Contao Klassen noch nicht so gut vertraut, auf diese Lösung wär ich nie alleine gekommen.
    Vielen herzlichen Dank.

  4. #4
    Contao-Nutzer
    Registriert seit
    10.11.2012.
    Beiträge
    62

    Standard

    Zitat Zitat von JMMB Beitrag anzeigen
    Hi,

    du hast die Möglichkeit in der mod_navigation das Template abzufragen das Du der Navigation zugewiesen hast.
    Ist es z.B. nav_default kannst Du es so machen:
    PHP-Code:
    <?php
    if($this->navigationTpl == 'nav_default'){
    echo 
    '<div class="meineKLasse">';
    }
    ?>
    JMMB
    Kann ich auf diese Art theoretisch auch den gesamten <nav></nav> Absatz an ein bestimmtes navigationTpl knüpfen?
    Ich müsste die mod_navigation ergänzen, dass führt aber leider dazu, dass ich auf allen restlichen Seiten keine "gewöhnlichen" Menüs mir einsetzen kann, da diese Änderung überall greift. Meine php-Kenntnisse sind leider nur sehr begrenzt...
    Geändert von illplanet (15.06.2013 um 17:48 Uhr)

  5. #5
    Contao-Fan
    Registriert seit
    27.06.2012.
    Beiträge
    600

    Standard

    man kann jeder navigation ein eigenes template zuweisen.

    1. template nav_default laden
    2. nav_default umbenennen
    3. im gewuenschten modul das template zuweisen und code anpassen

    Gesendet von meinem GT-I9505 mit Tapatalk 2

  6. #6
    Contao-Nutzer
    Registriert seit
    10.11.2012.
    Beiträge
    62

    Standard

    Zitat Zitat von valentin_ Beitrag anzeigen
    man kann jeder navigation ein eigenes template zuweisen.

    1. template nav_default laden
    2. nav_default umbenennen
    3. im gewuenschten modul das template zuweisen und code anpassen

    Gesendet von meinem GT-I9505 mit Tapatalk 2
    Da hast du recht. Es geht aber nicht um den Inhalt der nav_default, sondern den Inhalt von mod_navigation.

    Folgenden Lösungsweg habe ich gefunden:
    PHP-Code:
    <?php if ($this->navigationTpl == 'nav_default_custom1'): ?>
    <nav>....</nav>
    <?php endif; ?>
    <?php 
    if ($this->navigationTpl == 'nav_default_custom2'): ?>
    <nav>....</nav>
    <?php endif; ?>
    So lassen sich in Abhängigkeit der nav_default, innerhalb von <nav> in der mod_navigation, Anpassungen vornehmen.
    Geändert von illplanet (15.06.2013 um 18:15 Uhr)

  7. #7
    Contao-Nutzer
    Registriert seit
    29.05.2013.
    Beiträge
    81

    Standard

    leg dir doch ganz normal die navi an...dann erstell ein modul "eigener html code"

    HTML-Code:
    <div>{{insert_module::id_von_deiner_navi}}</div>
    und binde dann diese eben erstellte modul anstatt deiner navi ein

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
  •