Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 68

Хорошему разработчику/коллеге требуется инвайт на наш любимый хабр.
Почему бы ему не написать статью. Вы запостите. Если окажется удачной получите инвайт автоматический.
даже так? я не знал, предложу! да чего там, он наверняка это и сам увидит! спасибо за решение!
лучше выкинуть смарти на помойку и заюзать любой блочный шаблонизатор с поддержкой перегрузки блоков. дышать станет проще — я гарантирую это!
сколько людей столько и мнений. я вот, например, с вами не согласен
Толковая статья. Все по делу и минимум воды.
Smarty очень толковый и полезный инструмент.
Автору большое человеческое спасибо за статью.
На данную проблему наталкивается довольно много народу.
на здаровье! хоть кому-то пришлось к месту, приятно.
Данным шаблонизатором пользуюсь очень давно. Перед этим перепробовал немало других.
А со стороны некоторых личностей, ругань и плевки в тот или иной шаблонизатор были есть и будут.
Такая натура людей, тяга что-то ругать либо восхвалять.
Желательно не терять голову и искать золотую середину.
Идеального ничего не бывает.
По поводу проблемы с title и прочим — посмотрите про наследование блоков в django. После этого вам пользоваться смарти, скорее всего не захочется. там все это сделано без извратов, так как ваше решение — изврат, да еще и засовывание целой страницы в переменную, мне не очень нравится.

Еще в смарти нет вставки шаблонов с передачей параметров, вроде вызова функции, мне не хватает.

В общем, в наше время ООП и всеобщего MVC, смарти устарел, убог и неинтересн(( Давно пора уже что-нибудь получше придумать.
НЛО прилетело и опубликовало эту надпись здесь
Это вы сам двоечник, чему-то меня учить собрались! Покурите указанную вами ссылку еще раз, и убедитесь — что там нет того, что я писал, ни параметров, ни подобия фукнции, определенной внутри шаблона (хотя. конечно, может я неясно выразился, но мне нужна не пхп-функция, а смарти-функция, и не в отдельном файле, а в шаблоне)

А смарти — перегруженный мусором, и наследования нормального там все таки нет. Извраты на ПХП с имитацией наследования не считаются.
НЛО прилетело и опубликовало эту надпись здесь
нет есть такое понятие как функция шаблона служит например чтоб решать задачи вывода. я пользую довольно редко
а что такое программирование? вот в смарти активно юзают ветвления и циклы — это ли не программирование?

впрочем, любой «смарти-шаблон» — это функция от «параметров шаблона» генерирующая некоторую строку. любой «xslt-шаблон» — это функция от «xml-дерева», генерирующая другое «xml-дерево»
НЛО прилетело и опубликовало эту надпись здесь
Здесь (в моем примере) функция используется именно в смысле «подшаблон», то есть она содержит только логику представления, вроде шаблона в википедии. И, кстати, иногда, простейшие математические вычисления в шаблоне еще как нужны, например при выводе объектов в несколько колонок.

НЛО прилетело и опубликовало эту надпись здесь
они нужны во view, но не в template.
шаблону не нужно знать о том, сколько должно быть колонок — его задача, указать, как должна выглядеть таблица, как строка и как ячейка. тогда не придётся для каждого view писать свой шаблон со своим «количеством ячеек в строке» и абсолютно идентичным всем остальным.
Буэээ… еще и view отдельно писать… нет уж, мне бы все сразу)
если хотите, посмотрите квики и функции там есть и блочный синтаксис если припрет и мусора нет
Спасибо, поглядим, интересная вроде вещь, хотя вот совместимость со смарти зря они поддерживают, лишний код получается.
не они, а он, и не зря а очень даже круто. Учитывая что там одна регуляра разбирает все то ничего страшного =)
В общем, в наше время ООП и всеобщего MVC, смарти устарел, убог и неинтересн(( Давно пора уже что-нибудь получше придумать.


во первых это ваше личное мнение, не стоит так категорчно заявлять.
во вторых смарти достаточно популярен
в третьих что-то получше уже есть <a href=«quicky.keeperweb.com/ru/» quiky
про квики вот думаю стоит ли что написать?
да как, впрочем, и сам пых-пых, не смотря на свою ублюдочность, бешенно популярен.
НЛО прилетело и опубликовало эту надпись здесь
Не согласен на счет скорости и не использования в больших проектах.
Я использую (черт, опять скажут реклама...) так вот я использую «переработанный смарти» в плане скорости и прочего.
Использую его в двух, как я считаю, достаточно крупных проектах — мне нравится и все устраивает.

НЛО прилетело и опубликовало эту надпись здесь
примерно: 0,0513
НЛО прилетело и опубликовало эту надпись здесь
как мне кажется не только от смарти зависит скорость генерации страниц.
много каких еще факторов есть: использование кешированны/не кешированных данных и т.д. и т.п.
в своем примере я написал скорость «окончательной генерации страницы», т.е. сколько времени потребовалось от получения запроса, обработки (в данном случаем поиск по базе), обработка данных внутри шаблона и вывод страницы юзеру…
НЛО прилетело и опубликовало эту надпись здесь
главное, чтобы юзера были довольны )
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Очень жаль. Интересно было бы посмотреть.
так закодируйте чем-нибудь и вышлите (зенд инкодером например)
а почему xslt там нету?
Я в xslt не силен. Но если кто-то захочет набросать тест, то обязательно включу.
ок, у тебя там стоит расширение php_xsl?
Нет, но это не важно. Бенчить буду на пустой машине.
pastebin.com/f6154b560 — php скрипт. в конце нужно раскомментить код, чтобы трансформацию производил серер, а не клиент.
pastebin.com/f38cf48bc — xslt шаблон. я повырезал большинство атрибутов ибо меня заломало их закавычивать.

предлагаю протестить 3 режима:
1. серверная трансформация с использованием одного большого стайлшита
2. серверная трансформация с разбиением стайлшита на несколько файлов (как подключать внешние стайлшиты я там указал в комменте, )
3. клиентская трансформация (при учёте, что 90% клиентов её поддерживают — довольно актуальный и главное лёгкий для сервера режим)
Спасибо. Сейчас как раз пытаюсь добавить Lapa и Template Lite. Заодно и xslt добавлю.
ап
Тесты готовы. Можете посмотреть в SVN. Сейчас я на веборубе, и не могу провести тестирование.
ап
пасиба \(^_^)/

очень странно, что хслт быстрее на 4 шаблонах, чем на одном.

а вариант с клиентским наложением ты не рассматриваешь по принципиальным соображением?
6% — это случайные флуктуации от паяльника. На домашней машинке видимо был затык на винчестере, поэтому расхождения большие.

>а вариант с клиентским наложением ты не >рассматриваешь по принципиальным >соображением?
Нет, банально не успел.
Странный там тест, не сообщается о настройках сервера совершенно ничего. Да и не может XSLT из нескольких файлов быть быстрее чем из одного.
Я тестировал без акселераторов, результаты противоположные. И формировать данные лучше сразу в DOM, а не через формирование XML строки (оказалось что еще лучше с помощью SimpleXMLElement формировать DOM).
Попробую в понедельник -вторник.
а есть предложение как вступление переделать?
нужно писать статью про это: <a href=«quicky.keeperweb.com/ru/» quiky
? работает действительно быстрее
ну вот яндекс — это большой проект или маленький? а они там юзают xslt, который ещё более медленный, чем смарти.
НЛО прилетело и опубликовало эту надпись здесь
в php, как и почти везде, юзается libxml и libxslt, так что тормозить должно везде одинаково с точностью до времени инициализации. или в дотнэте свой велосипед? сомневаюсь, что он быстрее в плане обработки — скорее всего только в плане инициализации.

в яндексе юзают эту поделку: https://opensource.yandex.ru/wsvn/xscript/trunk/#_trunk_
на фоне луа + некоторого подобия на хмл язык программирования, пхп смотрится весьма и весьма респектабельно =)
НЛО прилетело и опубликовало эту надпись здесь
ну да, основной недостаток хслт в пхп определяется похапэшной архитектурой — xslt шаблон парсится при каждом запросе заново.

читаю новости — вот и знаю. для пауков шаблонизация вообще не нужна, а главная — да, видимо на хскрипте и работает.
НЛО прилетело и опубликовало эту надпись здесь
что значит в процессе работы шаблон узнал что ему надо еще что-то от модели ??
вы должны контролировать модель и шаблон на 100% и знать что в эту милисекунду шаблону требуется вот это, а в след — вот то…
не должно такого быть, что вот как то случайно шаблону надо еще что-то и мы начинаем хачить…

имхо однозначно при такой работе имеет место баг в архитектуре
нет, вы в зависимости от факторов дизайна можете понять нужна ли вам дополнительная информация (например в шаблоне для своих целей куку использовать)
зачем вообще нужны шаблонизаторы, если они:
1. выполняют то что можно сделать без них
2. работают медленнее чем та же конструкция на чистом php.
зачем?
По этой причине есть другие шаблонизаторы, кроме Смарти
НЛО прилетело и опубликовало эту надпись здесь
если есть желание могу обзор написать, тока пока всего 3 желающих
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации