medar |
|
---|---|
Та-дааа!!
Я, похоже, таки сделал логику для xtemplate. Тот путь, который я описал в постах выше оказался тупиковым, пришлось сделать все совсем по-другому. Файл пока не коммитю, так как даже обсуждения в Ideas не было. Хотя, ИМХО, обсуждать тут нечего, это мастхэв на 100% и дополнительных тормозов оно не создает. Вообще, когда я увидел ужас, летящий на крыльях ночи в xtemplate в виде массы регулярок и дублирования всех переменных движка, я уже спокойнее отношусь к вопросу "а не затормозит ли это движок?". Не затормозит. Если xtemplate не убил скорость, то точно уже ничего не убьет. :) Вот измененный файл: http://www.cotonti.com/datas/users/xtemplate.class_45.rar . Им надо переписать существующий (system/xtemplate.class.php). Посмотрите-потестите плиз, я погонял у себя, вроде работает везде и стабильно. Я завтра на свежую голову еще его погоняю и закоммитю. Использование. Итак, у нас в шаблонах стала доступна вот такая вот конструкция: <!-- IF <if_statement> --> этот текст будет показан если <if_statement> является true <!-- ENDIF --> <if_statement> - это логическое php-выражение, только вместо переменных используются tpl-тэги (в том числе и глобальные!) Примеры: <!-- IF {PHP.usr.profile.user_name} == "admin" --> привет, админ ! <!-- ENDIF --> <!-- IF {PAGE_DESC}== "" --> Описание страницы пустое. Напишите хоть что-нибудь <!-- ENDIF --> <!-- IF {PAGE_DESC} == {PAGE_TITLE} AND {PAGE_COMMENTS_COUNT} > 0--> Замечена нехилая активность в комментах! И, кстати, тайтл и деск страницы совпадают, если это вам интересно. <!-- ENDIF --> и даже можно так: Пример, конечно, надуманный, но больше в такой поздний час ничего в голову не лезет. <!-- IF strpos({PAGE_TITLE}, "жуй") --> {PAGE_TITLE|str_replace('жуй', '', %s)} ц-ц-ц как нехорошо <!-- ENDIF --> <!-- IF !strpos({PAGE_TITLE}, "жуй") --> {PAGE_TITLE} <!-- ENDIF -->"|str_replace" - это, кстати, фишка самого xtemplate - можно изменять значения тэгов callback-функциями. Вот как полезно, оказывается, читать документацию. :) Единственно чего нельзя - делать эти конструкции вложенными. Но так как в выражении можно использовать AND и OR, вложенность и не нужна по сути. rangjungyeshe.ru
|