Forums / Developer / Menu placed outside pagelayout.tpl
Salvatore Guarino
Friday 02 September 2005 4:30:50 am
I have to place this menu in a custom template, (i.e. my_product.tpl), but the variable '<i>$module_result</i>' in this namespace is unknown. There is another way? Can I use another variable?
<ul> {def $mainMenu=treemenu( $module_result.path, $module_result.node_id, array('folder','folder_product','tire_chain'), 1, 6)} {foreach $mainMenu as $menu} <li class="level_{$menu.level}"> {if $menu.is_selected} <div class="selected"> <a href={$menu.url_alias|ezurl}>{$menu.text}</a> </div> {else} <a href={$menu.url_alias|ezurl}>{$menu.text}</a> {/if} </li> {/foreach} </ul>
Stig Tidemandsen
Tuesday 25 October 2005 3:48:57 am
I'm having the same problem.Is there any way to make $module_result.path or an equivalent array available within $module_result.content?
Kristof Coomans
Thursday 27 October 2005 12:58:45 am
Are you including this template in pagelayout.tpl, or somewhere else?
independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org
Łukasz Serwatka
Thursday 27 October 2005 1:03:49 am
Stig, there is $node.path_array which holds node ids.
you can loop throw this array like
{foreach $node.path_array as $item} {def $node_data=fetch( content, node, hash( node_id, $item ) )} {$node_data.name} {/foreach}
Or just use $node.path this array contains content objects. Check it {$node.path|attribute(show,1)}
Personal website -> http://serwatka.net Blog (about eZ Publish) -> http://serwatka.net/blog
Thursday 27 October 2005 1:18:49 am
Thanx for the reply Lukasz However... The actual problem isn't looping the array, but doing the treemenu fetch.
<b>Usage</b>
treemenu( path, node_id [, class_filter ] [, depth_skip ] [, max_level ] )
The examples in the documentation use $module_result.path for the path argument. This means that I can't use treemenu outside pagelayout, unless I have a substitute for $module_result.path avaliable.
It would be nice to be able to use treemenu outside pagelayout because it simplifies determening if the node / parent node / grandparent node and so on, is selected:
{foreach $treemenu as $menuitem} <div style="margin-left:{$menuitem.level|mul(7)}px"> <a {$menuitem.is_selected|choose('','class="selected"')} href={$menuitem.url_alias|ezurl}> {$menuitem.text} </a> </div> {/foreach}
Thursday 27 October 2005 1:42:40 am
You are right, but you can use node.path or node.path_array as workaround and build menu without treemenu operator usling list or tree, more complicated but still possible ;)
Thursday 27 October 2005 1:50:11 am
Look herehttp://ez.no/products/ez_publish_cms/documentation/customization/tips_tricks/creating_tree_menus
H-Works Agency
Wednesday 07 December 2005 7:10:47 pm
Here is how i use 'treemenu' out of pagelayout.tpl (thus without $module_result.path) :
<b>The concept is to recreate the same $module_result.path array available in pagelayout.tpl.</b>
{def $module_path=array()} {foreach $node.path_array|remove(0,1) as $element} {def $thisnode=fetch('content', 'node', hash('node_id',$element))} {def $thisArray=hash('text', $thisnode.name, 'url', concat('/content/view/full/',$thisnode.node_id), 'url_alias', $thisnode.url_alias, 'node_id', $thisnode.node_id)} {set module_path=$module_path|append($thisArray)} {undef $thisnode $thisArray} {/foreach}
Then you just have to go on with the classical function synthax :
{let docs=treemenu($module_path,(...))}
</code>
EZP is Great