2

Smarty3テンプレートの継承を使用しています。私は次の問題を抱えています:

これは親テンプレートコードです:

{foreach from=$items_collection item=single_item name=foo}
  {block name="bar_{$smarty.foreach.foo.index}"}
    some html goes here that I need to make editable if required
  {/block}
{/foreach}

そして、この後、テンプレートを次のように拡張すると、次のようになります。

{extends file='path/to/template/file.tpl'}

{block name="bar_0"}random stuff{/block}
{block name="bar_1"}random stuff{block}
...

または、動的に生成された他のブロック名は、テンプレート値を変更しません...子に取得するのは親だけですが、ブロックの内容は変更されません。

動的ブロック名を実現するための特別な構文やその他の手法はありますか?

4

1 に答える 1

1

あり得ないと思います。ブロックは変数として保持されず、表示時にテンプレートに入力されます。代わりに、ブロックは一度コンパイルされてから、キャッシュされたテンプレートに対して静的になります。

テンプレートの継承は、単一のコンパイル済みテンプレートファイルを作成するコンパイル時プロセスです。{include}タグに含まれるサブテンプレートに基づく対応するソリューションと比較すると、レンダリング時のパフォーマンスが大幅に向上します。

かなり漠然としているので、やりたいことをどうやってやるのかアドバイスするのは難しいですが、ブロック機能でやりたいことができると思います。

于 2013-01-27T15:53:41.597 に答える