[Zope] Re: Why doesn't this work?

Andreas Jung lists at zopyx.com
Fri Dec 8 15:00:37 EST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



- --On 8. Dezember 2006 11:55:18 -0800 Javier Subervi 
<javier_subervi at yahoo.com> wrote:

> 2
>
> From: Andreas Jung <lists at ...108>
>
>
>>> - --On 8. Dezember 2006 10:38:25 -0800 Javier Subervi
>>> <javier_subervi at ...112> wrote:
>>>
>>>> <html>
>>>>
>>>> But when I try to make it work in an External Method like this:
>>>>
>>>>   stuff = '<html>\n'
>>>>   stuff = stuff + '<body>\n'
>>>>   stuff = stuff + '<table width="100%" align="center" class="text"
>>>> border="3" cellspacing="5" bgcolor="#E694FE" bordercolor="#D24BFA"
>>>> bordercolorlight="#DD77FB" bordercolordark="#C512FA"><tr><td>\n'
>>>> stuff = stuff + '<span
>>>> metal:use-macro="here/en-us/Quotes/10/macros/quote"></span><br />\n'
>>>> stuff = stuff + '<div align="center"><span class="text">\n'
>>>>   stuff = stuff + ' <a href="All_Quotes.pt" target="_top"><b>Show me
>>>>   all the quotes!</b></a>\n'   stuff = stuff + '</span></div>\n'
>>>>   stuff = stuff + '</td></tr></table>\n'
>>>>   stuff = stuff + '</body>\n'
>>>>   stuff = stuff + '<html>\n'
>>>
>>> An external method is not a ZPT. The external method returns just HTML.
>>> Why  and how should Zope treat interpret *something* inside the HTML
>>> generated  by the external method as macro? If you want a macro, the
>>> called object has  to be a ZPT - nothing else.
>>>
>>> - -aj
>>
>> If you want something different: you must instantiate a Pagetemplate
>> inside your external method, add the content through the related API and
>> let the  pagetemplate render the content. But there is usually no need
>> for such an  approach. Somehow you're trying to do something the wrong
>> way round.
>
> What I'm trying to do is change the line in question to this:
>
>   stuff = stuff + '<span metal:use-macro="here/en-us/Quotes/' +
> `randrange(1, len(self.objectValues()), 1)` + '/macros/quote"
>> </span><br />\n'
>
> So it generates a random number. Now, that's the "easy" scenario, and for
> that I originally had just a Page Template. However, next up I need to be
> able to accommodate another folder which requires:
>
> 1) walking the folder, opening each subfolder
> 2) creating a tuple of the folder (or numerical representation) plus the
> number of the quote 3) randomly choosing a quote from all the subfolders
>
>

You want to generate HTML as a result? You want to use to write ZPT!
You want to call external functionalities? You create an external method 
and call it *from* your ZPT.

That's the way to go.

- -aj



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)

iD8DBQFFecRlCJIWIbr9KYwRAu5lAKDZU/UTfisFbQ4HU9G5cSOAFigJsQCfWcFb
WPZrh6JgQR/qJu2xVqATL/8=
=vXTm
-----END PGP SIGNATURE-----



More information about the Zope mailing list