At 11/23/00 01:38 PM, Tom Deprez wrote:
Are there some sites which publish there DTML source(structure)? I'm particulary looking on how several navigation, menu, ... structures are implemented in Zope.
I use the following DTML Method (probably shouldn't be done in dtml) to produce a vertical, indented menu where folders are expanded to subfolders only if you're in one of the subfolders. Three custom folders are used to build the site (Category-Top, Category-Middle, and Category-Bottom). Each folder has a menu_entry property. A folder appears in the menu only if its menu_entry is non-blank. If you are currently in Pop Culture/Reviews/Books, the menu looks like this: Ask the Experts College Pop Culture Quiz Reviews Books Movies Music Trends Sports Here's the dtml. It's called display_menu and is recursive. Replace home_id_here with the id of the site's base folder. The base folder does not appear in the menu display. <dtml-unless topdown> <dtml-call "REQUEST.set('topdown',[])"> <dtml-call "REQUEST.set('homefound','n')"> <dtml-in PARENTS skip_unauthorized> <dtml-if "homefound == 'n'"> <dtml-call "topdown.insert(0, _['sequence-item'])"> <dtml-if "_['sequence-item'].id == 'home_id_here'"> <dtml-call "REQUEST.set('homefound', 'y')"> </dtml-if> </dtml-if> </dtml-in> <dtml-call "REQUEST.set('level', 0)"> <dtml-call "REQUEST.set('NodeToShow', topdown[0])"> </dtml-unless> <dtml-if "level > 0"> <dtml-with NodeToShow> <dtml-var "' '*3*(_.int(level)-1)"> <a href="&dtml-absolute_url;" class=toolbox>&dtml-menu_entry;</a><br> </dtml-with> </dtml-if> <dtml-if "level < _.len(topdown) and NodeToShow.id == topdown[level].id"> <dtml-in "NodeToShow.objectValues(['Category-Top','Category-Middle','Category-Bottom'])" sort=id skip_unauthorized> <dtml-if "_['sequence-item'].menu_entry"> <dtml-call "REQUEST.set('level', level+1)"> <dtml-call "REQUEST.set('NodeToShow', _['sequence-item'])"> <dtml-var display_menu> <dtml-call "REQUEST.set('level', level-1)"> </dtml-if> </dtml-in> </dtml-if> Not my finest piece of coding, but maybe it will help. -- Dennis Nichols nichols@tradingconnections.com