[ZDP] BackTalk to Document The Zope Book (2.5 Edition)/Dynamic Content with DTML

webmaster@zope.org webmaster@zope.org
Sat, 21 Sep 2002 19:36:54 -0400


A comment to the paragraph below was recently added via http://www.zope.org/Documentation/Books/ZopeBook/current/DTML.stx#2-33

---------------

    Let's follow this DTML code step by step to see where the variables are
    found.  First Zope looks for *standard_html_header* in the current
    object, which is the *pricelist* DTML Method. Next, Zope looks for the
    header in the current object's containers. The *Feedbags* folder
    doesn't have any methods or properties or sub-objects by that name
    either. Next Zope examines the *Feedbags* folder's container, and so on
    until it gets to the root folder. The root folder does have a
    sub-object named *standard_html_header*. The header object is a DTML
    Method. So Zope calls the header method and inserts the results.

      % Anonymous User - June 6, 2002 9:27 am:
       "Feedbags folder's container"... ok NOW I'm lost. A folder is NOT a container? or do you mean the parent
       folder of the Feedbag folder?

      % Anonymous User - June 6, 2002 9:33 am:
       a folder == a container. Note in the above description that "Feedbags" is a folder. It means the folder that
       contains the feedbag folder.

      % Anonymous User - June 6, 2002 3:35 pm:
       so...
       "container" = "parent"  ?

      % mcdonc - June 6, 2002 9:00 pm:
       Yes, in this particular case.

      % Anonymous User - June 10, 2002 9:40 am:
       so there are other meanings for "Container"?
       If so, please give reference where I might find more extensive definitions.
       Thanks!

      % mcdonc - June 10, 2002 9:47 am:
       The word is not really a precise computer science term, it just means something that contains something else.

      % Anonymous User - Sep. 12, 2002 5:17 pm:
       in zope, i guess it is.
       from a python script you can call something like
       this().container()
       to afford a reference to the folder the script is
       located in. doesn't seem to work in dtml-expr's,
       though.

      % Anonymous User - Sep. 21, 2002 7:36 pm:
       <dtml-var standard_html_header> really is
       <dtml-var name="standard_html_header">, 
       and the object named "standard_html_header" is a DTML Method, hence callable
       (its (python!) class has a __call__-method). 
       DTML therefore *calls* standard_html_header and replaces the complete dtml-var tag with whatever this call
       returned.
       This automagically calling of callables makes DTML work miracles for experts and stuns laypersons!