On 02-11-2008 at 09:36:04 a b <[EMAIL PROTECTED]> wrote:

I'm very glad with using phptal:cache, especially with "per " parameter.
But now, I want to achieve something like that:

I have following template:

<div id="word" phptal:cache="1h per url">
            Word of the day is: <span tal:content="word">word of the

Now I do:

// :my php code: to retrieve word which takes very long to execute
// returns $word
$tpl=new PHPTAL('test.html');
$tpl->word = $word;

I'd like to execute {{...}} only when cache is not fetched, else just
display cached HTML.

IMHO the best solution is:

$tpl=new PHPTAL('test.html');
$tpl->word = new WordGetter();

Word of the day is: <span tal:content="word/getWord"/>

Pass to the template an object that is cheap to create and have it do heavy work only on demand, e.g. when $word->getWord() is called. If the template is cached, the method won't be called.

An even simpler version of the same is:
<span tal:content="php:word_of_the_day()"/>

regards, Kornel

PHPTAL mailing list

Reply via email to