"James W. Howe" wrote: <snip>
/ Pages <... DTML methods to generate complete pages ...> Parts <... DTML methods containing page parts ...>
I built my page parts first and viewed them to make sure they looked ok. I then attempted to build a page. I started to assemble the pieces when I ran into a couple of problems. My first problem was figuring out how to access my "Parts". First I tried something like:
<dtml-var Parts/partName>
no, because you mix up syntaxes. / is no separator in dtml (Python). Try: <dtml-var "Parts.partName"> which does the same as
<dtml-with Parts><dtml-var partName></dtml-with>
This sort of worked. The problem is that some of my parts are designed to pick up information from the component which is containing it. For example, one part might have code like this:
<dtml-var contents>
I defined a default DTMLMethod called contents at the Root level, but I want to be able to redefine it at a lower level.
That in itself is perfectly possible. Watch out for using acquisition with sibling folders. For more information you may want to read the advanced DTML howto http://www.zope.org/Documentation/How-To/AdvancedDTML or (to repeat myself) my changing contexts in Zope, which is a draft for ZDP's ZBook( url: http://www.zope.org/Members/Hoekstra/ChangingContexts1)
I'm thinking that this is because when I use dtml-with to access the part, the part will get namespaces which include itself and its parent folders, but will not contain the namespace of the caller (or the namespace appears earlier in the namespace list). Is this mostly correct?
Yes. dtml-with changes namespaces. Calling an object doesn't.
Is there a way to accomplish what I want to do, namely access a DTMLMethod in some other portion of the tree but have the accessed method resolve its variables in the callers namespace? Finally, does the fact that I'm facing this problem indicate that I'm just not structuring my data in a very "zopeish" manner, or am I just not knowledgeable about all the ways to use acquisition.
Yes, see above hth Rik