定义动态块名称

时间:2013-01-25 14:57:17

标签: php smarty block smarty3

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

或者任何其他动态生成的块名称,它不会更改模板值...我对孩子的所有内容都是父级,但没有更改的块内容。

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

1 个答案:

答案 0 :(得分:1)

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

  

模板继承是一个创建单个的编译时进程   编译模板文件。与基于的相应解决方案相比   它包含在{include}标记中的子模板确实有更好的效果   渲染时的表现。

很难就如何做你想做的事情提出建议,因为你很模糊,但你可以用block function

做你想做的事。