Snippet: Template logic to exclude a content object node from menus
Table of contents:
Or, Looking for a way to hide a content?
Problem
I have many folders in the root eZ publish content tree (or elsewhere) which I do not want to be displayed in the menu.
Is there any way to add a folder to to eZ publish without it showing up in the top menus?
Solution
Using the eZ publish administrator, select Setup→Classes.
Edit your folder class and add checkbox called “Show in menu” (show_in_menu) By default checkbox is checked.
Then replace code in 'design/base/templates/menu/double_top.tpl' If you using double top menu.
{section show=eq( sum( $menu.index, 1 ), $menuitems|count )} <li class="last {eq( $module_result.path[1].node_id, $menu.node_id )|choose( '', 'selected' )}"><div class="spacing"><a href={$menu.url_alias|ezurl}>{$menu.name|wash}</a></div></li> {section-else} <li {eq( $module_result.path[1].node_id, $menu.node_id )|choose( '', 'class="selected"' )}><div class="spacing"><a href={$menu.url_alias|ezurl}>{$menu.name|wash}</a></div></li> {/section}
With
{section show=$menu.object.data_map.show_in_menu.data_int} {section show=eq( sum( $menu.index, 1 ), $menuitems|count )} <li class="last {eq( $module_result.path[1].node_id, $menu.node_id )|choose( '', 'selected' )}"><div class="spacing"><a href={$menu.url_alias|ezurl}>{$menu.name|wash}</a></div></li> {section-else} <li {eq( $module_result.path[1].node_id, $menu.node_id )|choose( '', 'class="selected"' )}><div class="spacing"><a href={$menu.url_alias|ezurl}>{$menu.name|wash}</a></div></li> {/section} {/section}
If you usign design/base/templates/menu/flat_top menu replace
{section show=eq( sum( $menu.index, 1 ), $menuitems|count )} <li class="last {eq( $module_result.path[1].node_id, $menu.node_id )|choose( '', 'selected' )}"><div class="spacing"><a href={$menu.url_alias|ezurl}>{$menu.name|wash}</a></div></li> {section-else} <li {eq( $module_result.path[1].node_id, $menu.node_id )|choose( '', 'class="selected"' )}><div class="spacing"><a href={$menu.url_alias|ezurl}>{$menu.name|wash}</a></div></li> {/section}
With
{section show=$menu.object.data_map.show_in_menu.data_int} {section show=eq( sum( $menu.index, 1 ), $menuitems|count )} <li class="last {eq( $module_result.path[1].node_id, $menu.node_id )|choose( '', 'selected' )}"><div class="spacing"><a href={$menu.url_alias|ezurl}>{$menu.name|wash}</a></div></li> {section-else} <li {eq( $module_result.path[1].node_id, $menu.node_id )|choose( '', 'class="selected"' )}><div class="spacing"><a href={$menu.url_alias|ezurl}>{$menu.name|wash}</a></div></li> {/section} {/section}
If show_in_menu flag is set to true (checked) item is show in menu.
Special thanks to participants: Negin Javadi, Gabriel Ambuehl, Lukasz Serwatka