[Zope] Changing Properties With ZPT

Dyyryath dyyryath at zerothelement.com
Wed Aug 10 10:31:48 EDT 2005


Thanks for the reply, Andreas.

Actually, I probably didn't properly explain my question. I do realize
that the template is an object and that all I need to do is access the
template's API to modify it's properties (though, I admit I'm a newbie
here). 

My problem is that the only way I can find to access the template object
is through ZPT's built-in variable 'template'. Since I'd like to change
the property, it seems like I'll need to use a python line that uses the
template's manage_changeProperties() method. I'm just not sure what the
python equivalent of the ZPT 'template' variable is.

An example is probably in order. Take the following code:

<div tal:content="template/title">TITLE HERE</div>
<div tal:content="python:context.title">TITLE HERE</div>

The first line does what I'd like it to do, it returns the 'title'
property of the template.

The second line doesn't. It returns the 'title' property of the
template's container.

How do I make the second line do the same thing as the first line. If
someone can give me that, I'll know how to do the rest.



Thanks for the On Wed, 2005-08-10 at 09:00 +0200, Andreas Jung wrote:
> 
> --On 9. August 2005 21:37:11 -0400 Dyyryath <dyyryath at zerothelement.com> 
> wrote: 
> 
> > I'm trying to figure out how I can change the properties of a template
> > with ZPT. For example, let's say I've got a Page Template with a
> > property called 'name' and I want to change it in response to something
> > in the HTTP request:
> >
> > <div tal:condition="python:'name' in context.REQUEST">
> >   SOME CODE TO CHANGE THE PROPERTY TO EQUAL context.REQUEST['name']
> > </div>
> >
> > I haven't seen anyway to do this with ZPT so I'm assuming that I'll need
> > to use a python script of some sort, but I'm not sure how to access the
> > template's properties without hardcoding the template's name.
> >
> 
> Your question indicates that you have not understand yet that everything in 
> Zope is an object with a unique API. Objects can be modified by calling 
> their API from within ZPT, PythonScripts, external methods, product code or 
> from wherever as long as the Zope security allows it. This means it makes 
> no difference to modify an object from a PythonScript or from a ZPT *as 
> long* as you know its API. What you want is provided by the PropertyManager 
> API (see Zope Book Appendix B -> PropertyManager).
> 
> -aj



More information about the Zope mailing list