dark-demon Не все И идея генерации XML блока, потом его парсинга, потом парсинга XSL блока, потом генерации из всего этого еще одного XML (ну или HTML) лично мне представляется гм... не самой вменяемой. С данной точки зрения любая другая технология будет менее извращенной.
AntonShevchuk Можно пример использования? Как будет выглядеть шаблон для вывода простой таблички (исходные данные хранятся в массиве), и как будет выглядеть код запуска этого шаблона?
Dagdamor, я на днях это реализовал 30 строчек кода на пхп. из фич - осёл, лиса и кит производят трансформацию сами, не нагружая сервер.
Есть ощущение что вопрос риторический.... Я использую расширенный Zend_View для работы с кэшем: PHP: <?php // set cache for template and some logic operation if (!$View->cache('UNIQUE_ID', 60)) { $View->data = array(array(....), array(....), .., array(....)); } $View->setTemplate('index.tpl'); $View->display(); ?> // index.tpl <table> <? foreach($this->data as $row_id => $row) : ?> <tr> <? foreach($row as $cell_id => $cell) : ?> <td><?=$cell?></td> <? :endforeach; ?> </tr> <? :endforeach; ?> <table> index.tpl - это пример использования as is, конечно его можно использовать как дочерний шаблон другого шаблона, или еще вариант написать helper с функционалом для построения таблицы (тогда это будет одна строчка в шаблоне)
Жаль, что мою старую тему прикрыли Возник вопрос: как красиво и понятно оформить следущий код: PHP: <?php function isUser(){ } function isAdmin(){ } function logIn(){ } function logOut(){ } function showLogInForm($type='user'){ ?> <div style="text-align:center"> Представьтесь, пожалуйста. <form name="logInForm" id="logInFormID" action="" method="post"> Имя пользователя: <input type="text" name="name"><br /> Пароль: <input type="password" name="password"><br /> <? if ($type=='admin') { ?> <input type="hidden" name="admin" value="yes"> <? } ?> <input type="submit" value="Вход"> </form> </div> <? } ?> Хорошо или плохо такое частое использование "?>"/"<?" ? Или лучше делать винигрет из echo? Или покажите как это реализовать на этом шаблонизаторе.
topas мне тоже нравится. Так со стороны глянул - песня. Лишь бы не получилось, что больной помер от вскрытия. Я уже сейчас начинаю путаться в закрытии/открытии кода. И как это отразится на быстродействии? (моем и интерпретатора) example, please! Dagdamor имхо нет уязвимости. В зависимости от этого "йа админ" мы посылаем человека на logIn с параметром админ или нет. Там проверяем его в админской таблице. Чуток позже покажу. Помогите с шаблонами =)
Можно реализовать динамику и в Вашем примере только в цикле создавать и убивать экземпляр класса Buffer а потом накопившееся передать как одну из переменных. Получиться что в шаблоне переменная {траляля} замениться на сумму результатов шаблонирования. Нужно только дописать метод который не выводит контент а возвращает его. Правда увеличиться само колличество шаблонов в папке tempates :wink: , зато динамики в шаблоне нет и видно каждую детальку из которых собираются страницы. С уважением я.
Кидай, рад буду взглянуть,а то у меня с шаблонами кутерьма в голове, никак не выберу как реализовать...
Очень интересная темка... Сперва я делал большие файлы, где перемешивался php и html, потом начал выделять некоторые повторяющиеся кусочки программы php в отдельные файлы и вставлять их с помощью include, потом крупные блоки html также начал выделять в файлы (что-то типа: PHP: [b]register-form.php[/b] <?php $html = "... табличка на html с формой регистрации ..."; ?> [b]register.php[/b] <?php if ($_GET["agree"] == "true") { include("register-form.php"); echo $html; } ?> ) И только относительно недавно узнал о существовании шаблонов и шаблонизаторов... Учился-то, в основном, по книгам, а в них (тех, с которых начинал изучение php) не затрагивался вопрос о шаблонах. Лишь недавно купил две большие и толстые книги (php 5 для начинающих А4 836 стр + php 5 для профессионалов А4 600 стр), в которых кое-что есть на эту тему. Естественно, меня это очень заинтересовало. Как Вы считаете, какой из существующих бесплатно распрастраняющихся шаблонизаторов - лучше и проще? Все ли они работают на сервере хостинга? И какой используется, например, в PHPBB2 - какой-то из уже готовых или разработчики PHPBB делали свой?
Да, и мне бы тоже было очень интересно почитать такую статью!!! И с шаблонами у меня в голове пока тоже "кутерьма"...
obsrv, спасибо за совет! Не подскажете, а документация полная к нему есть на русском? Что-то типа http://www.smarty.net/distributions/man ... 4-docs.pdf , ну или хотя б он-лайн версия типа http://www.smarty.net/manual/ru/ ??? А то что-то я не могу никак найти...
sobachnik Рекомендую написать свой, примеров на сайте полно, а также особая рекомендация писать native парсер, например с инициализацией переменных, которые находяться в шаблоне с помощью extract http://ua2.php.net/manual/ru/function.extract.php, буферизацие вывода с помощью ob_start http://ua2.php.net/manual/ru/function.ob-start.php ...., и естественно перед этим includ - а файла шаблона.
sobachnik к сожалению слабовата документация, хотя как таковая есть в скачиваемом пакете. там же и примеры есть. Я все по этому изучил. imho: XTemplate послабее Smarty, но эта слабость и есть сильная сторона - разделяет PHP и HTML код.
это не сильная сторона шаблонов, а обычная сторона, они для этого и сделаны в основном, и чтобы отделить не код а ЛОГИКУ ПРЕДСТАВЛЕНИЯ, потому что в шаблонах php код классически может присутствовать...
kostyl в XTemplate не может присутствовать. Мне в Smarty не понравилось втягивание именно пхп кода в темплейт (всякие циклы, if else, что там еще). XTemplate много проще (не так гибок в этмо вопросе), но он заставляет ДУМАТЬ, как вывернуться из сложно ситуации, когда так и тянет вставить циклик в темлейт. А вот про ЛОГИКУ РАБОТЫ - это от лукавого не надо словами играться
я уже исправил Можно написать такой шаблонизатор, что будешь всю жизнь думать как вывернуться, классы пишут чтобы было проще, а не сложнее. А вставить циклик в тэмплейт - тут нет ничего страшного, ну я вставвляю - и всё работает, и нормально работает, и это я делаю за пару секунд, а не ДУМАЮ пол часа, дописываю кучу ненужного..., ps и не парсю по два раза...
kostyl Спокойной!, может я тоже когда-нибудь буду использовать движок типа смарти... К слову, очень долго пока думать не приходилось . Все задачи решаются без внесения php (или -образного как в смарти) кода в темплейт (я ПОКА сторонник жесткого не пускания кода в темлейт). Кстати, причем тут классы ? А вообще, в холли ворс не учавствую. Считаю, что для новичка начать с ЛЕГКОЙ (в использовании и понимании), но достаточно мощной версии шаблонизатора (XTemplate) очень даже желательно. Затем можно и Smarty полюбить, особенно если нужда заставит. ps: Слегка модифицировал XTemplate под свои нужды, например: вызов user func на парсе блока - полезная иногда вещь (особенно если играться параметрами тага блока или переменной).