単一の配列を繰り返し処理し、一部の要素に対してのみキャッシュを無効にしたい。だから私の考えは、nocacheセクションでkey
要素を保持して取得することでした。key
残念ながら、私は次の可能性を見つけていません:
$rec@key
nocacheセクションにキャッシュされた割り当て、
key
またはキャッシュされたセクションに変数定義を保持します。
それを行う方法はありますか (スマートなコード変更なし)。ここに私のtest.tpl:
{foreach $array as $rec}
{if $rec.dynamic}
{assign var="key" value=$rec@key}
{nocache}
{$array[$key].text}
{/nocache}
{else}
{$rec.text}
{/if}
{/foreach}
およびtest.php:
<?php
include_once 'libs/Smarty.class.php';
$smarty=new smarty();
$smarty->caching=1;
$smarty->assign('array',array(
'r1'=>array('dynamic'=>true,'text'=>'dynamic'),
'r2'=>array('dynamic'=>false,'text'=>'static')
));
$smarty->display('test.tpl');
(もちろん、テキスト表示よりもはるかに複雑なことに使用します:))私は多くのトリックを試しましたが、自分では不可能だと思います。間違っていることを教えてください:)