Определение имен динамических блоков
Я использую наследование шаблонов 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 answers
Я не думаю, что это возможно. Блоки не хранятся как переменные, а затем заполняются в шаблоне при его отображении, вместо этого они компилируются один раз и затем становятся статическими для кэшированного шаблона.
Наследование шаблонов - это процесс во время компиляции, который создает один скомпилированный файл шаблона. По сравнению с соответствующими решениями, основанными на подшаблонах, включенных в тег {include}, он имеет гораздо лучшую производительность при рендеринге.
Трудно дайте совет о том, как делать то, что вы хотите, так как вы довольно расплывчаты, но, вероятно, вы можете делать то, что хотите, с помощью функции блока