2

我正在使用 Smarty 3 模板继承。我有以下问题:

这是父模板代码:

{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 回答