Вы не зашли.
спасибо, но...
0. выводится лишь один entries - на старом выводились все полученные в цикле
У меня была опечатка там, я теперь исправил.
1. почему так не делать?
Твиг поддерживает встроенный цикл.
2. как тогда надо делать?
Уже я вижу написано.
3. с кешированием тоже меняется синтаксис если юзать твиг?
Так же.
4. а вообще он нужен или ну его, не заморачиваться и делать по-старому?
Стоит.
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
ROZARD, vitaly - спасибо, буду переходить на твиг...
но появились новые вопросы:
1. когда данные имеются то все нормально, работает отлично
но когда в массиве пусто - получаю ошибку
[ 1]: Call to a member function render() on a non-object
- ругается на строку
$template['vars']['mainblock'] = $xg->render($tVars);
в голову лезет такое решение - проверять массив и если он пустой то вместо
'entries' => $favEntries
ставить
'entries' => 'ничего нету'
но если уже взялся делать "правильно" - хочется знать, почему не работает условие в шаблоне? так как в примере Виталия:
{% for entry in entries %}
тут данные
...
{% else %}
тут сообщение что данных нету
{% endfor %}
2. на старом шаблонизаторе время генерации было примерно одинаковое и если несколько раз обновлять одну и туже страницу отличалось незначительно (использовал {queries} и {exectime})... когда сделал на твиге - то если пообновлять страницу, значение {exectime} может отличаться в несколько раз - лично у меня получалось от 0.11 до 0.99 сек... почему такой большой разброс? это нормально? 0.99 считаю неприемлимым - как бороться?
Проекты любой сложности. Качественно. Дорого.
Не в сети
t3s, Кажется ты не добавил global $twig;
2. Возможно это было при первом показе когда твиг скомпилировал твой шаблон в php
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
ROZARD, $twig добавлен - полагаю что без него вообще плагин бы не работал...
а по поводу компилирования - что-то подозрительно много раз компилирует - могу скинуть урл в личку, сам глянешь... хотя стоп - если я сделал изменения в плагине - то он компилирует заново?
Проекты любой сложности. Качественно. Дорого.
Не в сети
все, разобрался - с первым вопросом ошибка была из-за того что
$xg = $twig->loadTemplate($tpath['plugin'].'plugin.tpl');
был внутри цикла, а надо было до него...
со вторым - пока что хз, попробую глянуть еще на другом сервере...
если кому интересно - с твигом получился чуть меньший размер плагина (3060 кб против 3218) но увеличился размер шаблона - один файл на 1029 кб против двух файлов 393кб + 450кб
первое преимущество лежит на поверхности - верстальщику будет проще изменять/создавать шаблон, особенно если он раньше имел дело со SMARTY (не нужно париться с пхп)
буду благодарен если накидаете в меня другими преимуществами твига
Проекты любой сложности. Качественно. Дорого.
Не в сети
Главное преимущество ТВИГА это то, что первый раз он работает с TPL файлом, делает из него PHP и потом работает только с PHP вариантом, в отличии от стандартного шаблонизатора, который постоянно регулярками ищет в текстовом файле переменные. Посмотреть и ужаснуться что он сгенерировал можно в папке с кешом сайта.
Не в сети
парни, поскольку с циклами разобрался - остался вопрос с условиями, ведь в твиге есть поддержка условий?
полагаю, что условие "старым" методом раскритикует ROZARD, и будет прав
поэтому вопрос 1 - как сделать как в SMARTY:
{if $smarty.get.ukey eq 'блаблабла'}
тут выводим, если джет.юкей соответствует блаблабла
{/if}
т.е. передать условие из плагина в шаблонизатор? ведь подобная реализация более "правильная", чем сравнивать в плагине и передавать в разные переменные шаблона? или все-же нет?
вопрос 2
//оффтоп бегин
тут вспомнился топик где говорили что ходужник и верстальщик в одном лице - это типа круто, типа значит чел шарит, рубит и все такое... вероятно те кто говорили не встречались с перлами от подобных "художниковерстальщиков" вроде
{if условие1 eq 'блаблабла'}инфа для условия 1 {if условие2 eq 'блаблабла'}инфа для условия 2 {if условие3 eq 'блаблабла'}инфа для условия 3 {/if}{/if}{/if}
//оффтоп енд
т.е. второй вопрос - как "правильно" для твига сделать сложные условия?
Проекты любой сложности. Качественно. Дорого.
Не в сети
Все ответы здесь.
Twig for Template Designers
Twig for Developers
Готовый пример здесь см. работу с переменной $twig
Это есть ты хочешь понять действительно что он может. Документация от разработчика
Не в сети
<?php
$xt = $twig->loadTemplate($tpath['test'].'test.tpl');
$tVars = array(
'user' => is_array($userROW)?1:0,
'user_status' => $userROW['status']
);
$template['vars']['mainblock'] = $xt->render($tVars);
В *.tpl
{% if (user) %}
//Видит только авторизованый
{% endif %}
{% if (user) %}
//Видит только авторизованый
{% else %}
//Видит только не авторизованый
{% endif %}
{% if (user_status == 1) %}
//Видит только админ
{% elseif (user_status == 2) %}
//Видит только редактор
{% elseif (user_status == 3) %}
//Видит только журналист
{% elseif (user_status == 4) %}
//Видит только комментатор
{% endif %}
Всё очень просто...
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
Не в сети
Только в этом нет необходимости, сейчас уже везде (при использовании TWIG) доступна переменная user, которая является копией $userROW
Это просто пример условий на примере $userROW))))
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети