I've been battling the tree tag all day to get expand_all to work, and it almost won, but then I hacked the source. {insert evil manical laughter here} Simple use of the tree tag, listing the titles of objects within folders: <!--#var standard_html_header--> <p><a href="<dtml-var URL0>?expand_all=1">Expand all</a></p> <!--#tree myfolder leaves=listObjects--> <!--#var title_or_id--> <!--#/tree--> <!--#var standard_html_footer--> Where listObjects is a simple DTML Method that lists the titles of the objects within the folder, with a little indenting: <!--#var standard_html_header--> <p><dtml-in "objectValues()"> <dtml-if "_['sequence-index'] != 0"><br></dtml-if> <dtml-var title_or_id> </dtml-in> <!--#var standard_html_footer--> Now, if you hit the "expand all", it expands all the folders except those at the lowest level, the ones that just contain (non-folder) objects. My first thought was that maybe it wasn't really considering the lowest level folders to be a branch, so I spent a while trying different functions for the "branches" attribute. That didn't work. Take a look at tpValuesId inside of TreeTag.py, which builds a list of all the expandable subitems for expand_all: try: items=getattr(self, branches)() except AttributeError: items=() for item in items: try: if getattr(item, branches)(): If I'm reading this right, the first call on branches gets the subitems which are considered a branch (defaulting to isPrincipiaFolderish over in ObjectManager). But then the second call on branches checks if the subitem itself has a non-zero number of branches. I commented out the second call there, and lo and behold! Suddenly my tree was fully expanding. So, what did I break? :) Andrew