Перейти к содержимому


Вопрос по Smarty


  • Вы не можете ответить в тему
Сообщений в теме: 4

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 December 2012 - 03:47 PM

Что то не могу найти (нет в принципе?) в smarty макросов.

Задача: вставить в разные места шаблона один и тот же код. Где-то в одну строку, где-то в десяток.
Понятно, что можно это сделать с помощью {include} или {insert}, но надо будет выносить кусочки кода в отдельные файлы, чего делать не хочется. Хочется написать что-то типа
{macro name="macros" }
мой-любимый-код
{/macro}
и затем в нужные места просто вставлять что-то типа {$macros}.

Вопрос: это я не могу найти нужную директиву smarty или ее действительно нет?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 27 December 2012 - 03:52 PM

как один из вариантов использовать {php} и вызывать "мой любимый код" (также можно брать его из базы и использовать eval)


  • 0
Изображение Изображение Изображение

#3 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 December 2012 - 06:01 PM

как один из вариантов использовать {php} и вызывать "мой любимый код"

Я HTML-код имел в виду :). Куски HTML, причем еще и со смарти-переменными, которые совершенно одинаковы и встречаются в нескольких местах TPL.HTML. А я именно этот (эти) куски постоянно меняю. Надоело единообразно менять в нескольких местах.

PS. Сделать свой простенький плагин для смарти, скорее всего, сработает, но тогда уж проще include/insert. Ну да и фиг с ним. Примем за истину, что {macro} в Смарти нет. Хотя и странно это.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 ruter

    Продвинутый пользователь

  • VIP
  • 334 сообщений
Репутация: 151
Мастер

Отправлено 27 February 2013 - 05:18 PM

Мне кажется, что подойдет использование {capture} Любимый код заключается в теги {capture name='foo'} и {/capture}
и потом выводится в шаблоне при помощи - $smarty.capture.foo
  • 3

#5 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 February 2013 - 06:11 PM

Мне кажется, что подойдет использование {capture}

Спасибо! Это именно оно!
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)