Bonjour, --- Lorenz Lorenz-Meyer <lorenz@clubvolt.de> wrote:
But it is in my opinion no good solution for the more general problem of a clear-cut separation of structured content on the one hand and layout information on the other. I would still very much like to learn a way to have the main text area treated like a normal field - with associated dtml-methods providing for the looks of the content on different page-types.
I suspect that you can do what you are asking using ZPT - as I understand it ZPT is (are?) explicitly designed to support the separation you are asking for (if I understand what you're asking for...).
Take, for example, a situation where you want the complete content of a document included in some kind of list. How would you do that? Probably by handing over some parameter like "noheader" that is tested by the header method (<dtml-unless noheader>....). I think this is illogical. It should be the other way round somehow.
For this case, I think you can make a ZPT 'shell' that iterates (with tal:repeat) through whatever page body ZPTs you want in the list and inserts each one into the rendered page via macro. With ZPT macro stuff (METAL), your page layout 'shell' template, header, footer, and body/content (and whatever other parts you want) are separated. You can render a page body without header/footer simply by calling a different 'shell' template that doesn't include header and footer macros. Or you can do it with a TAL condition statement that includes (or not) header/footer macros (or whatever) depending on context. For my printable pages I simply have a 'printerpages' folder with an alternate style sheet (same name, different styles) in it. To render somefolder/somewhere/coolpage with printer page style, I call somefolder/somewhere/printerpages/coolpage, so that the printable page style sheet is found first. In some instances I combine this with conditions based on context, for example to use a grayscale logo instead of color on printable pages, like this: <!-- use color logo if not in printerpages --> <span tal:condition="python:request.PARENTS[0].id!='printerpages'"> <img src="graphics/pageshelllogo.gif" alt="Home" width="95" height="56" border="0"> </span> <!-- use grayscale logo if in printerpages --> <span tal:condition="python:request.PARENTS[0].id=='printerpages'"> <img src="graphics/pageshelllogogray.gif" alt="Home" width="95" height="56" border="0"> </span> cheers, John S. __________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup http://fifaworldcup.yahoo.com