Контактная информация            Баг трекер            Предложение хостинг-провайдерам

Передача аргументов шаблону объекта

Санжар Ахмедов Автор: Санжар Ахмедов
Дата: 1 апреля 2008
Рубрика: How-to

В ОС при выполнении объекта, можно передавать аргументы в шаблон объекта.

Вариант 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}
...

Какой вариант использовать? Это зависит от задачи: если передаваемый аргумент относится к месторасположению блока, то лучше использовать второй вариант, в остальных случаях — первый.

Комментарии

RSS RSS
ButscH, 24 апреля 2008
Хм, вчитался повнимательней и оказалась очень полезная штука!!!!!!
Дима, 21 января 2009
И правда! Буквально сейчас это понадобилось!

Добавить комментарий

Имя:     Email:
Комментарий:
Введите символы, которые видите на картинке.
Если символы неразборчивы, кликните по картинке несколько раз.