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.
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