Nachdem es bei der Navigation derzeit nicht möglich ist einzelne Navigations-Elemente zu verstecken, haben wir das meistens so gelöst, dass Navigations-Items (Blätter) einfach nicht angezeigt werden.
Das funktioniert prinzipiell ganz gut, führt allerdings dazu, dass das Tag <we:ifHasEntries>/ nicht immer das gewünschte Ergebnis liefert, da Items für <we:ifHasEntries>/ natürlich auch Einträge sind. Das führt dann zum Beispiel dazu, dass in der zweiten Navigationsebene eine leere ungeordnete Liste ausgegeben wird, woraus Darstellungfehler resultieren.
Um dem beizukommen, haben wir das Tag <we:ifHasFolders /> geschrieben:
- Code: Alles auswählen
<?php
/**
* This function checks if the current navigation folder contains sub-folders.
* This is espacially useful for navigations where you want to hide
* navigation items and <we:ifHasEntries>/ would not suffice.
*
* @author Sascha Nemecek
* @param $attribs array
* @return boolean
*/
function we_tag_ifHasFolders($attribs=array(), $content='')
{
if (isset($GLOBALS['weNavigationItemArray']) && is_array($GLOBALS['weNavigationItemArray']))
{
$element = $GLOBALS['weNavigationItemArray'][(sizeof($GLOBALS['weNavigationItemArray']) - 1)];
if (sizeof($element->items))
{
foreach ($element->items as $key => $value) {
if ($value->type == 'folder') {
return true;
}
}
}
return false;
}
}
?>
Liebe Grüße,
Sascha
PS: Schöner wäre es natürlich, wenn man diese Funktion per Attribut in <we:ifHasEntries>/ implementieren würde. Aber darauf wollte ich jetzt nicht warten .