[Product-Developers] Re: Setting a mime-type on a Zope 3 browser view
Martin Aspeli
optilude+lists at gmail.com
Sun Jan 24 07:04:39 UTC 2010
Derek Broughton wrote:
>> I would perhaps think that using viewlets to compose an XML document is
>> not something viewlets were designed for.
>
> It wasn't really my intent, it just turned out that a viewlet was a good way
> to include another template at the time. Then my design changed, and
> simplified, and in the end I ended up with a single template that needed a
> choice of XSL stylesheets, so it was easy enough to remove the viewlet.
I think the main use case for viewlets is when third-party products need
to "plug into" the UI at specified points, perhaps for specific contexts
and/or views. For example, plone.app.discussion can plug into the area
under the content to show discussion threads everywhere that it makes sense.
They are not a good way to break a single template up into a few
re-usable chunks. For that, they are overkill.
> My turn for a D'oh. It was using a viewlet because there was originally a
> need for a viewlet, but you're absolutely right that this is both a better
> idea, and more suited to my current purpose.
Good. :)
> Thanks.
>
> (Still, it doesn't seem right that viewlets can have a different content-
> type from the view that invokes them),
Agree. I think this is a quirk of the ZPT engine, though. Bear in mind
that the viewlet isn't really aware of how the template works. A viewlet
just has a render() method that's meant to return some output. Some
viewlets' render() method will invoke a ViewPageTemplateFile which in
turn executes the ZPT engine over a template file. However, that's not
part of the viewlet mechanism: you could just as easily return a
hand-coded string or one built using any other templating engine.
Therefore, the problem is more the sniffing that the ZPT engine is doing
to go into XML mode. I'm sure there's a way to invoke the
ViewPageTemplateFile from render() that forces this without the
sniffing, but I'm not sure how. I doubt many people use ZPTs to build
XML documents (although it's a perfectly reasonable thing to want to do).
Martin
--
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book
More information about the Product-Developers
mailing list