Hi Hans, --On Samstag, 14. Dezember 2002 16:49 -0500 Hans Deragon <hans@deragon.biz> wrote:
Greetings.
I searched in many places, but I could not find an example on how to create a left navigation bar with Zope. I might have some ideas, but I would like to hear from you oldies (as opposed to newbies) the most efficient way to create one. Off course, the left navigation bar should show up on each web page of the site, it would expand as the user goes in deeper on the site and you would only need to write it once and use it on all of the web pages.
I am a newbie to Zope, but not in html or python.
Simple solution: In root or where you want your navigation start, create a pythonscript, lets call it "navigation" like this: ---- *snip* --- # first get all the parents from REQUEST (a list with all the objects in URL) parents=context.REQUEST.PARENTS # then a simple recursive helper function def buildnavigation(baseobject): # decide if we have to look deeper (when we are in the path) if baseobject in parents: return [{'folder':obj, 'subfolders':buildnavigation(obj) } for obj in baseobject.objectValues('Folder')] else: return [] # return the list in list in list object return buildnavigation(container) ---- *snip* ---- In ZPT, it is a bit ugly, but this way you dont violate standards, the idea is to create all levels of navigation (you sure will have a maximum depth you want to display) <div metal:define-macro="navigation"> <ul> <li tal:repeat="nav here/navigation"> <a href="." tal:attributes="href nav/folder/absolute_url" tal:content="nav/folder/title_or_id">..</a> <ul tal:condition="nav/subfolders"> <li tal:repeat="nav nav/subfolders"> <a href="." tal:attributes="href nav/folder/absolute_url" tal:content="nav/folder/title_or_id">..</a> <ul tal:condition="nav/subfolders"> <li tal:repeat="nav nav/subfolders"> <a href="." tal:attributes="href nav/folder/absolute_url" tal:content="nav/folder/title_or_id">..</a> <ul tal:condition="nav/subfolders"> <li tal:repeat="nav nav/subfolders"> <a href="." tal:attributes="href nav/folder/absolute_url" tal:content="nav/folder/title_or_id">..</a> </li> </ul> </li> </ul> </li> </ul> </li> </ul> </div> You can use this macro in all your pages or define a macro for a page which includes the construct and defines a slot for your variable content. HTH Tino Wildenhain