[ZDP] BackTalk to Document The Zope Book (2.5 Edition)/Appendix C: Zope Page Templates Reference

nobody@nowhere.com nobody@nowhere.com
Thu, 12 Sep 2002 10:21:59 -0400

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


      Inserting HTML/XML::

        <p tal:content="structure here/getStory">marked <b>up</b>
        content goes here.</p>

        % Anonymous User - May 23, 2002 12:43 pm:
         This snippet is unclear unless we know what getStory
         returns.  Is it HTML?  Be clear.  

         Also, what would happen if you said "structure" but
         only text were returned, or vice-versa?

        % fdrake - May 24, 2002 4:41 pm:
         getStory() is expected to return HTML (or XML if you're using XML instead).
         Nested TAL markup will be interpreted.

         If it returns plain text it needs to be valid when parsed as an HTML fragment,
         so it depends on whether the < or & characters are included.

        % Anonymous User - Sep. 10, 2002 2:34 am:
         A problem I can find no documentation on related to this, 
         is how can you access variables defined in a page template,
         in another page template called to be the content of a tag?
         For example, say the getStory above is actually a page template,
         and you modify the call like this:

         <p tal:define="myvar string:whatever"
            tal:content="structure here/getStory">marked <b>up</b>
               content goes here.</p>

         Now how can you access myvar from within getStory?

        % Anonymous User - Sep. 12, 2002 10:21 am:
         I solved the above by putting calling the pagetemplate from python. Instead of using tal:content="structure
         here/getStory" i use:
         tal:content="structure python:context.getStory(myvar='whatever')"

         Now from within the getStory page template options/myvar can be accessed. I 
         think this is a good trick to add to the documentation... explaining this 
         additional capability, using python to insert an embedded page template  within 
         another page template where one needs to pass some variable from the outer 
         template to  the inner template. Unless there is a better way that I don't know 
         about... then that would be good to document also.