On Tuesday 26 June 2007 12:46, Hermann Himmelbauer wrote: > At first, thanks for your reply, this clears things up a lot for me. The > link to the Blog-entry above was also very valuable.
Great! > What I still don't understand is how to implement a simple, quasi-static > html-page. With browser:page I'd do it like this: > > <browser:page > name="index.html" > for="myapp.interfaces.IMyApp" > template="index.pt" > layer="swarmfinder.layer.IMyAppLayer" > permission="zope.Public" > /> I'll note that Zope 3 does a lot of black magic to make this directive work correctly. > And the template "mypage1.pt" would e.g. use the "body" macro and have some > static content. Right. > In case of pagelets, I'd do it like this (correct me if I'm wrong): > > <z3c:pagelet > for="*" > name="index.html" > permission="zope.View" > class=".MyAppPage1" > layer="z3c.layer.pagelet.IPageletBrowserLayer" > /> > > <z3c:template > for=".MyAppPage1" > layer="z3c.layer.pagelet.IPageletBrowserLayer" > template="mypage1.pt" > /> > > And then I'd have to implement an interface and a class: > > class IMyAppPage1(zope.interface.Interface): > pass > > class MyAppPage1(BrowserPagelet) > implements(IMyAppPage1) > > This is a lot more code than with the browser:page example. > As a solution, I'm thinking about a magic "template" directive in the > z3c:pagelet namespace, e.g. something like that: > > <z3c:pagelet > for="*" > name="index.html" > permission="zope.View" > template="mypage1.pt" > layer="z3c.layer.pagelet.IPageletBrowserLayer" > /> This example is longer than it needs to be. For starters, you do not need the interface; in your example it serves no use. Optionally, if you do not need to keep template registration independent of view registration, the following will work as well: class MyAppPage1(BrowserPagelet): template = viewpagetemplatefile.ViewPageTemplateFile('mypage1.pt') <z3c:pagelet for="*" name="index.html" permission="zope.View" class=".MyAppPage1" layer="z3c.layer.pagelet.IPageletBrowserLayer" /> In our experience, we rarely do static pages, maybe one every 20-30 other views. Then, we purposefully did not provide the semantics of the browser:page directive, because we *want* transparency. So why optimize this rare use case at the cost of losing transparency? > Perhaps in case of this "template" directive, the interface/view class > could be created on the fly? What do you think? No, one of the (maybe implicit) goals of pagelets is to require view classes and get rid of the class building magic. Regards, Stephan -- Stephan Richter CBU Physics & Chemistry (B.S.) / Tufts Physics (Ph.D. student) Web2k - Web Software Design, Development and Training _______________________________________________ Zope3-users mailing list Zope3email@example.com http://mail.zope.org/mailman/listinfo/zope3-users