[Grok-dev] How do I reference a common template in the statics
folder?
Uli Fouquet
uli at gnufix.de
Wed Jul 4 19:28:29 EDT 2007
Hi Sebastian,
On Thu, 05.07.2007, 00:32 +0200 Sebastian Ware wrote:
> I am creating a "define-macro" page template, which I have put in my
> static directory. But how do I reference it in "use-macro" and do I
> need to create a class for this page template?
I think you indeed should define an appropriate class (and remove your
pt from 'static', macros are not static ;-) or things become quite
difficult. The method I personally like best:
- Define a class `Master(grok.View)` in a module `macros.py`. You can
make sure, that the context of the class binds to all other views,
like this::
from zope.interface import Interface
import grok
class Master(grok.View):
grok.context(Interface)
Sidenote:
You don't *need* to register a macro-template for all views, but
you can also write one just for views of a certain model. Use this
model as context then. Also you don't *have* to define the macros
class in its own module (although it makes your code more readable,
from my point of view). But, yes, you need to give an associated
`grok.View`.
- Then, in the subdirectory `macros_templates`, create a page
template `master.pt` with your standard macros.
>From any other of your page templates you then can call the macros in
`master.pt` like this::
<html metal:use-macro="context/@@master/mypagemacro">
or similar.
I think, I have seen that method (the thing with 'Interface') first in
one of Philipps applications (nudgenudge?) and like it.
Hope that helps,
--
Uli
More information about the Grok-dev
mailing list