1

スマートデータに基づいてスマートブロック名を定義したいのですが、できないようです。
例:

{foreach $array as $code}
  {block name=block_$code}
     <div id='{$code}'></div>
  {/block}
{/foreach}

私の目的は、子テンプレートによって特定のblock_$codeブロックを拡張することです。これは可能ですか、それともこれを行うために使用できる他のトリックがありますか?

ありがとう。

4

2 に答える 2

0

{assign}ブロックとcat修飾子を使用できます。例えば

{foreach $array as $code}
    {assign var=foo value="block_"|cat:$code}
    {block name=$foo}
        <div>
    {/block}
{/foreach}

Nbこれはテストしていませんが、動作するはずです。これを短絡して、を使用することもできます{block name="block_"|cat:$code}

于 2012-10-09T22:36:00.180 に答える
0

2011年から次のリンクを見つけることができました。これは、当時は不可能であったことを示しています。私はそれがまだそうではないと思う:

http://www.smarty.net/forums/viewtopic.php?t=19805&highlight=block%20variable%20name

良いニュースは、それなしでコードを機能させる方法を理解できたことです。foreachで定義されたdivの1つだけをオーバーライドできるようにしたかったのです。これが私がそれを行う方法です:

親:

{foreach $array as $code}
    {block name=code_loop}
        <div>Normal Stuff</div>
    {/block}
{/foreach}

子:

{block name=code_loop}
    {if $code == 'code of interest'}
        <div>New Stuff</div>
    {else}
        {$smarty.block.parent}
    {/if}
{/block}
于 2012-10-12T14:08:04.770 に答える