定义动态块名称


Defining dynamic block names

我正在使用 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}
...

或任何其他动态生成的块名称,它不会更改模板值...我得到的只是父母,但没有更改的块内容。

是否有特殊的语法或任何其他技术来实现动态块名称。

我认为不可能有。块不会作为变量保存,然后在显示模板时填充到模板中,而是编译一次,然后对缓存的模板是静态的。

模板继承是一个编译时过程,它创建一个 已编译的模板文件。与基于 包含在 {include} 标签中的子模板确实要好得多 渲染时的性能。

很难

给出关于如何做你想做的事情的建议,因为你很模糊,但你可能可以用块函数做你想做的事