Как правильнее реализовывать повторно используемые блоки?

Приветствую.

В LS есть такое понятие, как блоки. Насколько я понял, блоки — это самостоятельные элементы, которые содержат в себе всю необходимую логику и могут выводиться на странице, используя свой шаблон. Как правило, блоки выводятся на страницах в специально отведенных для них местах — например, правая колонка.

Однако существует (и меня больше интересует) второй вариант их использования — это вставка в произвольное место шаблона при помощи {insert name=«block»}. Это бывает нужно, когда я хочу реализовать какой-то относительно сложный контрол, который не хотелось бы завязывать на конкретном event'е — чтобы 1) не засорять event 2) использовать в других местах.

Это выглядит примерно так:
{insert name="block" block="myBlock" params=$params}

Если мы создаем блок внутри плагина, то в params в частности должны указать имя плагина. Но т.к. атрибут params — массив, то возникают сложности при размещении этого элемента в шаблонах — в Smarty, как известно, нет простого способа сформировать массив в шаблоне.

Может быть, есть какое-то другое решение проблемы? Повторюсь: нужно иметь возможность вставки в шаблоны блоков со сложной логикой. Интересно услышать рекомендации от сообщества.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.