On Fri, Mar 22, 2002 at 03:19:28PM -0800, Iago wrote:
Here's the code for recursiveLinks:
You'll drive yourself insane mixing logic ("how do I get a list of my parent folders to build a breadcrumb trail?") and presentation ("I want each element of my breadcrumb trail to be hotlinked, with '>' characters between each one"). That having been said, I have a snippet of code at my Python/ZPT sitemap example (http://www.zope.org/Members/mwr/python_zpt_sitemap) that generates a list of folders similar to what you want: ### ### list_parent_folders ### results=[] # Find parent folders from the current folder ids2=[] for id in context.REQUEST.PARENTS[:-1]: ids2.append(id.id) ids2.reverse() for id in ids2: object=getattr(context,id) if hasattr(object.aq_explicit,'menu_entry'): results.append(object) return results The script does check for the existence of a 'menu_entry' property on each container, but you could remove that check if you want. ZPT that should accomplish the breadcrumbs might look like (completely untested, but built off of my known-working example): <div id="breadcrumbs" tal:define="sequence python:here.list_parent_folders()"> <tal:block repeat="item sequence"> <span class="crumb" tal:condition="python:here!=item or template.id!='index_html'"> <a href="link url" tal:attributes="href item/absolute_url" tal:content="item/title_or_id">link to some folder</a> -- </span> <span class="crumb" tal:condition="python:here==item and template.id=='index_html'"> <strong><span tal:replace="item/title_or_id">current folder (not linked)</span></strong> </span> </tal:block> </div> And I think that'll give you a breadcrumb trail that looks like: <a href="/a">Title A</a> -- <a href="/a/b">Title B</a> -- <strong>Title C</strong> if you were in the folder /a/b/c Hope that works, or that you can use it as a starting point. -- Mike Renfro / R&D Engineer, Center for Manufacturing Research, 931 372-3601 / Tennessee Technological University -- renfro@tntech.edu