Определение имен динамических блоков


Я использую наследование шаблонов 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}
...

Или любое другое динамически генерируемое имя блока, оно не изменяет значения шаблона... все, что я получаю от ребенка, - это родитель, но без измененного содержимого блоков.

Существует ли специальный синтаксис или какой-либо другой метод для получения динамических имен блоков.

Author: Plamen Nikolov, 2013-01-25

1 answers

Я не думаю, что это возможно. Блоки не хранятся как переменные, а затем заполняются в шаблоне при его отображении, вместо этого они компилируются один раз и затем становятся статическими для кэшированного шаблона.

Наследование шаблонов - это процесс во время компиляции, который создает один скомпилированный файл шаблона. По сравнению с соответствующими решениями, основанными на подшаблонах, включенных в тег {include}, он имеет гораздо лучшую производительность при рендеринге.

Трудно дайте совет о том, как делать то, что вы хотите, так как вы довольно расплывчаты, но, вероятно, вы можете делать то, что хотите, с помощью функции блока

 1
Author: Danack, 2013-01-27 15:53:41