XAKEPEHOK
@XAKEPEHOK

Yii и Smarty-renderer

Я разрабатываю SaaS приложение на Yii разбитое на frontend и backend и еще несколько частей. Задача использовать на frontend'e Smarty, но сложность вот в чем:

Задача frontend'a — «выдавать» разные темы (themes) в зависимости от HTTP HOST. Каждый такой сайт — это отдельная папка, которая расположена в webroot.themes.http_host

На frontend'e фактически есть только один контроллер, в котором только одно действие, которое рендерит разные представления в зависимости от HTTP HOST и параметров GET

Мне нужно, используя smarty-renderer рендерить эти самые представления, но необходимо, чтобы структура была такая:
В папке webroot.themes.http_host должен лежать файл «index.tpl» и папка «pages», в которой может находить неограниченное количество файлов.

Проблема в том, что при такой структуре мне приходится прописывать полный путь для файлов представлений в виде алиасов, в том числе, в *.tpl файлах при использовании {include file="..."}

Вопрос: как задать путь по умолчанию и где именно это сделать?
Сейчас в действии контроллера мне приходится прописывать путь вида:
$this->render('webroot.themes.'.Y::param('domain').'.index', array('page' => $page));

Это не критично при использовании в действиях, но при использовании {include file="..."} — проблема.

Я пробовал непосредственно перед вызовом $this->render() изменять значения: Yii::app()->viewPath и Yii::app()->viewRenderer->getSmarty()->setTemplateDir()
Но при этом вылетает Exception о невозможности найти файл представления.
Прошу помощи! Особенно, хотелось бы получить ответ от samdark

P.S. Прописывать алиасы путей в смарти, в {include file="..."} нельзя потому, что приложение — Saas, и это будут делать конечные пользователи.
  • Вопрос задан
  • 4751 просмотр
Решения вопроса 1
XAKEPEHOK
@XAKEPEHOK Автор вопроса
Сам спросил, сам ответил.
Yii::app()->viewRenderer->getSmarty()->setTemplateDir(Y::alias('webroot.themes.'.Y::param('domain')));
$this->render('webroot.themes.'.Y::param('domain').'.index', array('page' => $page));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Crank
@Crank
Интересно, для решения каких задач целесообразно использовать такую связку?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы