Конфигурационные переменные и шаблоны Smarty

Возникла такая потребность: использовать в шаблонах значения собственных переменных, которые я задаю в кофиге. Но список переменных и констант, которые передаются в Смарти жестко задан. Можно, конечно, самому править класс Viewer, но это плохой путь — при каждом обновлении версии придется снова и снова лезть руками в системный класс.

Поэтому предлагаю разработчикам следующее: определить глобальную переменную-массив (например, $aCustomVar), и ее скармливать шаблонизатору. Тогда в папку, скажем, /config/modules/custom можно положить config.php, который будет подключаться автоматически, а в нем задаем этот самый массив:
$aCustomVar['element1']='bla bla bla';
$aCustomVar['element2']='custom string';


И тогда в своем шаблоне (.tpl) я могу использовать эти переменные:
<div>Элемент 1: {$aCustomVar.element1}</div>
<div>Элемент 2: {$aCustomVar.element2}</div>

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

avatar
Я недавно начал ковыряться с ЛС, и, возможно, есть уже какие-то решения, которые я пока не заметил, тогда киньте им в меня, плиз
avatar
Что Вам мешает передавать этот массив из экшна?
avatar
угу, лучше чем иметь большой массив глобальных переменных в шаблонах.
А так всё понятно…
avatar
А в чем разница — лезть в руками в стандартный экшн и там кидать массив для Смарти или делать это в конфиге? Если я буду таскать непомерно большой массив, то это в любом случае плохо, если он небольшой, то на прозводительности и сжираемых ресурсах практически не скажется. А вот с точки зрения кастомизации мой вариант мне кажется гораздо удобнее и практичнее.
avatar
Почему в стандартный экшн? Создавайте в вашем модуле массив, отдавайте его в Smarty из экшна
$this->Viewer_Assign('array',$array)


И используйте на ваше усмотрение…

{$array.element1}
и т.д.
avatar
Писать специально экшн только для того, чтобы кастомные переменные передать в шаблон? Не знаю, мне кажется это слишком витиеватым.
avatar
без изменения стандартной сборки можно обойтись, например, так:
создать модуль, скажем, LsAssingVars и в нём определять/загружать любые переменные

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