Basiert auf TYPOlight Originaltemplate nav_default.tpl (TL 2.7.5)
Kurzbeschreibung was die Modifizierung bewirkt:
In Menüs wird die Klasse 'active' gegen die Klasse 'trail' getauscht, wenn der Menüpunkt vom Seitentyp 'Interne Weiterleitung' ist.
Ausführliche Beschreibung/Sonstige Infos:
Code-Auszug:
PHP-Code:
...
<?php if ($item['isActive']): ?>
<!-- Den unteren Listenpunkt muss man löschen! Ist nur zur Veranschaulichung im FE -->
<li>
<strong>HREF</strong>: <?php echo $item['href']; ?><br />
<strong>HREF bereinigt</strong>: <?php echo strtr($item['href'], array('index.php/' => '','.html' => '')); ?><br />
<strong>ALIAS</strong>: <?php echo $item['alias']; ?>
<?php if ($item['alias'] !== strtr($item['href'], array('index.php/' => '','.html' => ''))): ?>
<?php echo '<strong> ungleich, also trail</strong>'; ?>
<?php else: ?>
<?php echo '<strong> gleich, also active</strong>'; ?>
<?php endif; ?>
</li>
<?php $trail = 'active'; ?>
<?php if ($item['alias'] !== strtr($item['href'], array('index.php/' => '','.html' => ''))): ?>
<?php $trail = 'trail'; ?>
<?php endif; ?>
<!-- replaced 2x 'active' in next line with uncommented '<?php #echo $trail; ?>' -->
<li class="<?php echo $trail; ?><?php if ($item['class']): ?> <?php echo $item['class']; ?><?php endif; ?>"><span class="<?php echo $trail; ?><?php if ($item['class']): ?> <?php echo $item['class']; ?><?php endif; ?>"><?php echo $item['link']; ?></span><?php echo $item['subitems']; ?></li>
...
Ich vergleiche die Länge von $item['alias'] mit der Länge von $item['href']. Bei einer Weiterleitung ist das Ziel nämlich anders als der Alias. Da ich meine URLs umschreibe und folderurl benutze, wird bei mir der alias am Ende um '.html' ergänzt. Deswegen muss ich die Länge von $item['alias'] vor dem Vergleich noch mit 5 addieren. Der Vergleich der Stringlänge war erstmal einfacher, als ein direkter Stringvergleich. Ein direkter Stringvergleich wäre natürlich sicherer.
In der Zeile nach dem Vergleich muss das Wort 'active' zweimal durch '<?php echo $trail; ?>' ersetzt werden.
Andreas
Edit:
Ich vergleiche jetzt direkt die Strings (nicht mehr die Anzahl der Buchstaben) von href und alias, nachdem ich aus href sowohl 'index.php/' als auch '.html' entfernt habe. Wer seine URLs umschreibt, also ohne index.php/ arbeitet, kann das natürlich aus dem Code entfernen - also dann nur: array('.html' => '')
Lesezeichen