В ОС при выполнении объекта, можно передавать аргументы в шаблон объекта.
Вариант 1. Задание аргументов из настроек объекта
В свойствах объекта, в секции настроек шаблона можно задать аргументы, которые будут передаваться шаблону. Аргументы задаются в формате query_string.
Допустим, на сайте есть блок со списком новостей на главной и на внутренней странице. Оба блока идентичны, но в блоке на главной есть ссылка на rss. В обоих объектах можно использовать один и тот же шаблон и в шаблоне проверять аргумент-флаг, который показывает, выводить ссылку на rss или нет.
Шаблон:
{if $args.rss}<a href="/feeds/news/">RSS</a>{/if}
<ul>
{foreach from=$news item=i}
<li><a href="{$i.href}">{$i.header}</a></li>
{/foreach}
</ul>
В настройках объекте на главной в поле «Передавать параметры:» пишем rss=1. А во втором объекте оставляем это поле пустым. Все.
Вариант 2. Передача аргументов при определении блока
В первом варианте пришлось создать два объекта и один шаблон. Можно обойтись и одним объектом, если на главной и на внутренней страницах используются разные шаблоны страниц, или объекты находятся на разных блоках. Для этого ищем вызов блока (run_block) новостей в шаблоне главной страницы и передаем аргумент rss. Например, если список находится в блоке center.2, то это будет выглядеть так:
...
{run_block id=center.2 rss=on}
...
Какой вариант использовать? Это зависит от задачи: если передаваемый аргумент относится к месторасположению блока, то лучше использовать второй вариант, в остальных случаях — первый.

Комментарии