Прикручиваем 3 Smarty к LS
В коментариях к одному из топиков, randomtoy попросил меня рассказать по подробней про прикрутку smarty 3 к ЛайвСтриту — рассказываю.
Там в общем-то ничего сложного нет.
1) Файл /engine/modules/viewer/Viewer.class.php
Не заработал метод Viewer -> TemplateExists()
Времени разбираться и делать по человечески не было, заменил внутренности функции на следующий код
В этом же файле после
добавляем
2) В самом смарти
файл — /engine/lib/external/Smarty-2.6.19/libs/sysplugins/smarty_internal_data.php: 226
заменил на
Возможно это где-то настраивается в конфиге, но ни дока ни гугл ответа не дали.
3) 3 смарти более строг к синтаксису потому при первом просмотре из шаблонов посыпятся ошибки.
Собсвенно все
UPD Все это проделано с текущим стабильным релизом Smarty 3.0.7.
Там в общем-то ничего сложного нет.
1) Файл /engine/modules/viewer/Viewer.class.php
Не заработал метод Viewer -> TemplateExists()
Времени разбираться и делать по человечески не было, заменил внутренности функции на следующий код
if (file_exists($sTemplate)) return true;
foreach ($this->oSmarty->template_dir as $dir) {
if (file_exists($dir . '/' . $sTemplate)) return true;
}
return false;
В этом же файле после
$this->oSmarty = new lsSmarty();
добавляем
$this->oSmarty->loadPlugin('smarty_modifier_escape');
if('rss'== Router::GetAction()){
$this->oSmarty->loadPlugin('smarty_modifier_replace');
}
2) В самом смарти
файл — /engine/lib/external/Smarty-2.6.19/libs/sysplugins/smarty_internal_data.php: 226
public function getVariable($_variable, $_ptr = null, $search_parents = true, $error_enable = true)
заменил на
public function getVariable($_variable, $_ptr = null, $search_parents = true, $error_enable = false)
Возможно это где-то настраивается в конфиге, но ни дока ни гугл ответа не дали.
3) 3 смарти более строг к синтаксису потому при первом просмотре из шаблонов посыпятся ошибки.
Собсвенно все
UPD Все это проделано с текущим стабильным релизом Smarty 3.0.7.
11 комментариев
Во вторых — в третьем появилось много плюшек ради которых стоит перейти на него. Детальнее можно почитать тут.
Я всегда буду нажимать кнопку «предпросмотр», перед отправкой комента.
Я всегда буду нажимать кнопку «предпросмотр», перед отправкой комента.
У меня к вам пара вопросов и не могу набраться наглости написать в лс.
Попробовал прикрутить по инструкции.
Скачал смарти, переименовал папку нового смарти в Smarty-2.6.19.
Все заменил. Получил —
Второй вопрос по кэшу для анонимных пользователей. Вы писали в прошлом посте, что отдаете не авторизованным посетителям все из кэша. Безумно интересно как вы это реализовали. Все мои попытки закончились передачей куки неизвестно кому, кто начал под сессией админа удалять все подрят :-)
Такие вопросы лучше обсуждать в топиках :)
в начале файла engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php есть код
Который региструрет смартевый автолоад. Вот он почему-то у Вас не срабатывает.
Я бы поставил брейкпоинты и проверил что там не так.
По кешу для анонимов.
Кешируется силами смарти, и пока не очень хорошо. Вся проблема в том что я пока не придумал как чистить кеш для анонимов когда меняется страница. Вернее придумал но еще не реализовал.
Алгоритм такой. При инициализации движка, если аноним и страница есть в кеше выплевываем ее из кеша и умираем. Если в кеше нет то генерируем страницу с Smarty->caching = true как обычно.
Если интересны подробности накатаю топик.
а в ls при php5 летят варнинги, поэтому не каждый человек готов перейти на пятую версию
кстати, вы забыли упомянуть об этом в топике :)
На локалке эксперементировать можно, в продакшн сильно рано.
а вообще хорошая идея обновить смарти, возможно, когда будет окончательное решение Макс внесёт его в транк — было бы здорово!