Finding the 'top but one' node id

Author Message

Ben Pirt

Saturday 12 July 2003 6:23:15 am

Hello all,
I have created a subnavigation element which will get all of the child nodes to the one which you are currently viewing.
What I would like to do is if the user is further down in the site, they will be shown the second level of navigation in that section.
e.g.

root
------ products
------ ------ red
------ ------ blue
------ ------ green
------ ------ ------ furry
------ ------ ------ smooth
------ contact
------ etc....

so when they are in:
products >> green >> furry

(or anywhere in the products section for that matter)

the subnavigation will show:
red
blue
green

hope this makes sense. The code I am currently using is:

subnav

{let folder_list=fetch( content, list, hash(parent_node_id, $node.node_id,sort_by, array( array( priority ))))}

<ul>

{section name=Folder loop=$folder_list}
<li><a href={concat("/",$Folder:item.url_alias)|ezroot}>{$Folder:item.name|wash}</a></li>

{/section}
</ul>

I am using the nice url technique (thanks Karsten), hence ezroot - The variable I need to replace is $node.node_id with the node_id for the top but one node (in this case products). Because I don't know how many levels deep the site will be, I can't just refer to the grandparent node. Any ideas?

Thanks in advance,
Ben Pirt

Paulo Almeida

Saturday 12 July 2003 6:44:30 am

If i understand your needs, I seen 2 ways (if anyone have another i'll thanks to seen it too)
You dont know the deep o site, but you know the level of top of your subnavigation. why don't use path too find the top level? something like this:
fetch('content','list',hash(parent_node_id,$module_result.path[2].node_id))

The other ir create an ini file, define there the id of top subnavigation and use ezini in template. or define directly in template (i really don't like this solution).

Hope helped

Paulo Almeida

PACPI.COM Internet Consulting
http://pacpi.com

Ben Pirt

Sunday 13 July 2003 5:06:34 am

i'll try the path version
thanks for your help,
Ben

Ibrahim Khachab

Friday 25 July 2003 4:27:52 am

I think that $node.path_array is an array of the parent nodes ids of the actual node. $node.path_array[0] if the id of root of the site $node.path_array[1] is the id of main folder.

You may use the following code to do what you are asking for.

{section name=parent_path offset=1 loop=$node.path_array}
{let parent_node=fetch('content',node,hash(node_id,$parent_path:item))}
{$parent_path:parent_node.name} >>
{/let}
{/section}

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.