[Zope] RE: ZPT Print Theme
Mikhail
mikhail@freehand.ru
Tue, 24 Dec 2002 18:08:50 +0300
> Here's how I do it...
>
> Here's the first line of my index_html...
>
> <html metal:use-macro="here/getTemplate">
>
>
> 'getTemplate' is a python-script, consisting of...
>
> request = container.REQUEST
>
> if request.has_key('pp'):
> return context.standard_print_template.macros['master']
> else:
> return context.standard_template.macros['master']
It seems to be right, but, unfortunately, it does not work.
What I hase:
main_template - normal Page Template like this:
<html metal:define-macro="page">
<body>
<span metal:define-slot="body" tal:omit-tag="">
Body....
</span>
</body>
</html>
and many other page templates that call it:
<html metal:use-macro="container/templates/freehand.pt/macros/page">
<span metal:fill-slot="body">
<!-- ... -->
</span>
</html>
You recomend me change main_template to python script:
## Script (Python) "main_template"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
request = container.REQUEST
if request.has_key('print'):
return context.print_template.macros['page']
else:
return context.normal_template.macros['page']
-------------------------------------------------
Now, when I try to render pages I have an error:
Undefined
with traceback:
[....skip....]
File /usr/lib/python2.2/site-packages/TAL/TALInterpreter.py, line 158, in
__call__
File /usr/lib/python2.2/site-packages/TAL/TALInterpreter.py, line 191, in
interpret
File /usr/lib/python2.2/site-packages/TAL/TALInterpreter.py, line 510, in
do_useMacro
File /usr/lib/zope/lib/python/Products/PageTemplates/TALES.py, line 247,
in evaluate
File /usr/lib/zope/lib/python/Products/PageTemplates/Expressions.py, line
198, in __call__
File /usr/lib/zope/lib/python/Products/PageTemplates/Expressions.py, line
188, in _eval
Undefined: macros not found in
'container/templates/freehand.pt/macros/page', at line 1, column 1
Or in ZMI with checked "Expand macros when editing" flag:
Macro expansion failed
Products.PageTemplates.TALES.Undefined: macros not found in
'container/templates/main_template/macros/page', at line 1, column 1
What I do wrong and can that problem be resolved in this direction?
--
Mikhail 'Xen' Kashkin