Re: How to getId() of pt from a Script (Python)

Clemens Klein-Robbenhaar <[email protected]> Tue, 04 Oct 2005 22:04:18 +0200
Newsgroups gmane.comp.web.zope.page-templates
Message-ID <[email protected]>
José Henrique wrote:
> Use "print template.getId()".
> 
> 2005/10/4, Chris Miles <[email protected]>:
> 
>>I have a Page Template in a folder: folder1/mypage.pt
>>containing:
>>  <span tal:replace="here/myscript">Testing</span>
>>
>>myscript is a Script (Python) containing:
>>  print context.getId()
>>  return printed
>>
>>Now, when folder1/mypage.pt is called TTW, it displays "folder1" as the
>>context.getId(), but I was expecting (and hoping) it would display
>>"mypage.pt"...  Isn't it being called within the "context" of mypage.pt
>>?

  I am not sure if the solution above works that straight in the script;
it does not magically inherit the "template" variable from the page
template, does it?

  The way I would prefer to handle this is to pass the template to the script
explicitely, e.g.:

   <span tal:replace="python:here.myscript(template)">Testing</span>

Then add "template" to the parameters of Your script, and
template.getId() will work.

  If this is to explicit for You, calling the script via:

<span tal:replace="template/script">Testing</span>

should do what You want: not the script is called having the
template as the context (unlike "here/script", where the script has
the same context as the template).

Cheers,
Clemens