Работа с Шаблонами PHP
Разделение PHP и HTML кода, использование шаблонов
При написании кода на PHP может возникнуть потребность создать в коде элемент на HTML. Начинающие разработчики пишут HTML код прямо в файле с PHP кодом, просто заключая его в кавычки и заменяя в нем переменные данные. Конечно, такой способ прост, позволяет не отвлекаться на дополнительную работу по разделению PHP и HTML. Но это неправильно, необходимо весь HTML код выносить в отдельные файлы – HTML шаблоны.
Почему необходимо отделять HTML от PHP? Причин может быть несколько:
- смешивание кода HTML и PHP в одном файле выглядит некрасиво;
- нет подсветки HTML синтаксиса, загромождается код PHP – ведь обычно HTML код занимает довольно много места;
- невозможно повторное использование HTML кода в других местах веб-приложения;
- когда будет необходимо вносить изменения в HTML – придется долго искать этот участок кода в файле с PHP кодом.
На сегодняшний день для выполнения такой задачи разработаны различные шаблонизаторы, которые как раз созданы для отделения кода от верстки. Но не всегда есть желание использовать что-то стороннее, да и к тому же средствами PHP можно самому реализовать простую систему шаблонизации. Как это сделать?
Для примера создадим файл с расширением tpl, в котором будет храниться HTML код. Это и будет наш шаблон, расширение файла можно сделать любое, tpl здесь просто для примера. Соответственно в редакторе кода можно задать подсветку синтаксиса HTML для этого расширения (к примеру в Notepad++). В этом файле прописываются нужные переменные, которые необходимо будет заменить на нужные данные. Пример шаблона:
Далее создаем некоторую функцию, например – myfunction, в которой есть данные и путь к шаблону:
Наконец, необходимо создать функцию get_html, которая будет выполнять работу по подключению указанного шаблона и заменять в нем данные. Функция принимает два параметра: путь к шаблону и данные. В цикле происходит проход по всему содержимому массива data и создаются переменные. Затем включается буферизация и подключается шаблон, в котором используются вышесозданные переменные. В завершении прекращаем процесс буферизации и возвращаем готовый HTML код. Примерный код приведен ниже:
Таким образом, отделить HTML от PHP кода без использования сторонних шаблонизаторов не составит труда. Использование шаблонов позволит сделать разработку проекта более удобной и правильной.
PHP: Шаблоны
Разделение оформления и содержания — извечная проблема веб-разработчика. Для держателя небольшого сайта в несколько страниц такой проблемы не возникает. Изменение дизайна, либо другая правка внешнего вида страниц для него не представляет трудностей. Однако для крупных веб-ресурсов, порталов смешение этих двух важнейших компонентов сайта: оформления и содержания — просто недопустимо. Иначе сайт становится настолько неповоротлив, что владелец ресурса теряет над ним управление.
Столкнувшись однажды с такой проблемой, сайтостроители начали ломать голову над тем, как сделать так, чтобы информация не привязывалась никоем образом к дизайну и наоборот, чтобы внешний вид всего сайта менялся буквально одним движением руки. Необходимо сказать, что способа идеального разделения оформления и содержания в наши дни пока не найдено. Но все же созданы определенные наработки и технологии, которые позволяют максимально приблизиться к этому идеалу. Прежде всего это технология использования шаблонов.
Что есть шаблон?
Понятие «шаблон» довольно обширное. Но чаще всего под шаблоном понимается некий документ (обычно в формате HTML), содержащий в себе все оформление ресурса, либо только его части, а также специальные метки, которые в процессе генерации страницы заменяются на информационные данные.
Для работы с шаблонами используются специальные веб-приложения (если говорить о веб-разработках), которые могут обладать различными свойствами и функциями. Но чаще всего их роль сводится к тому, чтобы заменять вышеуказанные метки на информационные блоки и соединять полученные части страниц в единое целое.
Наверное, во всех языках вебпрограммирования есть подобные инструменты для работы с шаблонами: в Perl это FastTemplate (который, кстати, существует и для PHP, но его использование не рекомендуется, так как приемлемые для работы версии относятся еще к третьей версии PHP), в отношении PHP — это крупный и многофункциональный Smarty, а также ряд других более мелких «шаблонизаторов».
Smarty
Smarty — одна из самых крупных разработок подобного рода. Реализован он, как и практически все приложения подобного типа, в виде класса.
Этот «шаблонизатор» имеет огромное количество возможностей: он не только осуществляет замену выделенных участков шаблона указанными данными, но и предоставляет использование внутри шаблона исполняемых участков, функций, конфигурационных файлов и прочее.
Описывать все его возможности и правила использвования не имеет смысла, так как на это потребуется не один и не два урока, к тому же к нему написана довольно хорошая документация, а примеры использования прилагаются к самому Smarty.
Smarty — это настоящий монстр по работе с шаблонами. Но, как понимаете, за столь широкую функциональность приходится платить ресурсами сервера и временем исполнения скрипта на его основе. В некоторых случаях из-за своей громоздкости Smarty кажется неповоротливым. Поэтому для сравнительно небольших проектов использование Smarty — обычно далеко не лучший выбор. В этом случае следует обратить свой взор на более мелкие и менее функциональные, но тем не менее достойные инструменты.
Другие инструменты для работы с шаблонами
Здесь я хочу обратить ваше внимание на «шаблонизаторы» на основе функции eval(). Эта функция расценивает код, заданный в ее аргументе, как код PHP и, соответственно, исполняет его. Например:
$text = ‘Здравствуйте, $name $fam!’; $name = «Артем»; $fam = «Акатов»; eval(‘echo «‘ . $text . ‘»;’); |
Этот примитивный пример работы с мини-шаблоном выведет «Здравствуйте, Артем Акатов!».
Преимущество данного типа инструментов работы с шаблонами связано с тем, что от разработчика заранее не требуется определять текст или другую информацию для меток в шаблоне (в нашем примере таковыми метками служат слова $name и $fam). Также такие «шаблонизаторы» значительно выигрывают по скорости.
Разовьем пример выше и напишем функцию, которая будет извлекать шаблон из файла:
function getTemplate($template, $ext = «htm») < $templatefolder = «templates»; // папка для хранения шаблонов return str_replace(«\»»,»\»», implode(«», file($templatefolder.»/».$template.».».$ext))); > $name = «Артем»; $fam = «Акатов»; eval(‘echo «‘.getTemplate(‘test’).'»;’); |
Если в файл test.htm мы поместим текст из переменной $text из примера выше, то результат выполения данного примера будет аналогичен предыдущему.
Для удобства работы с данным типом шаблонов пишутся классы. Одним из самых удачных классов такого рода является класс Евгения Кучерова.
Попробуем с его помощью создать один из вариантов примитивного «движка» для данного раздела «Уроки». При этом будем использовать записи MySQL, которые мы внесли на прошлых уроках.
Прежде всего заготовим шаблон. Для этого откроем окно с HTML-кодом данной страницы и заменим номер урока на переменную $row[id], вместо названия «Шаблоны» вставим $row[title], весь текст от первого слова «Разделение» до последнего «встречи!» заменим на $row[body]. Вместо элементов навигации «Назад, на урок 16» и в месте, где должно было бы располагаться «Дальше, на урок 18», соответственно ставим $prev и $next. Сохраним его как page.tpl. Готовый шаблон можно скачать здесь.
Теперь работаем с PHP
require «class.Template.php»; // относительный путь до класса $tpl = new Template; $ ); // извлекаем номер урока из строки запроса mysql_connect(«host», «artem», «12345»); $query = «SELECT COUNT(*) FROM lessons»; if ($ ; |
Это простой пример страницы, имеющей несложную структуру. Но даже на таком примере видно, как шаблоны упрощают создание веб-приложений.
В заключение
Конечно, здесь мы разобрали лишь крохотную часть этой обширной темы работы с шаблонами и рассмотрели лишь малую долю инструментов работы с шаблонами. Но хотелось бы сказать, что не так уж важно, каким образом вы работаете с шаблонами и какие средства вы используете, намного важнее то, как вы с ними работаете. Научиться грамотной работе с шаблонами не так-то просто, понимание этого приходит только с практикой, и тут я не могу дать определенных советов.
Шаблоны
Введение
Отделение логики получения данных от логики их отображения — очень важная составляющая веб-девелопмента.
Любой программист, который поднялся чуть выше уровня «Hello world», начинает ощущать потребность в таком разделении. Но далеко не все приходят к правильным выводам и решениям.
Поэтому я приведу здесь самые важные правила:
1. Код получения и код отображения данных надо разделять.
2. Любой вывод должен начинаться только после того, как для него готовы все данные.
3. Как следствие, любой скрипт должен заниматься только обработкой данных. После этого он может либо отправить какой-то НТТР заголовок, или вызвать шаблон, передав ему подготовленные данные, или и то и другое вместе.
4. Каким именно шаблонизатором пользоваться — дело десятое. Самый простой и доступный — сам РНР, поэтому примеры будет приводиться на нём.
Заблуждения
Нет, наверное, в веб-программировании темы столь же очевидной, сколь и непонятной, как шаблоны. Каждый, рано или поздно, приходит к выводу о необходимости испрользования шаблонов. Но приходит, почему-то, через какие-то дичайшие заблуждения и фантазии.
Самое простое и очевидное заблуждение состоит в том, что новички называют шаблоном вынесенный в отдельный файл «дизайн» — общий html для всех страниц сайта. И на этом успокаиваются. Динамическую информацию, ничтоже сумняшеся, выводя старым добрым echo 🙂
На самом же деле, шаблонизатор в основном занимается выводом изменяющегося содержимого страниц сайта. А вывод «дизайна» — задача второстепенная.
Фантазий же главных две:
1. Шаблоны нужны «дизайнеру», чтобы он мог их править, не разбираясь в PHP.
2. Следовательно, шаблоны служат для отделения PHP от HTML.
Давайте попробуем задуматься над первым утверждением. Кто такой дизайнер? Это человек, который работает в фотошопе. HTML он чаще всего не знает вообще. А над шаблоном работает либо специальный верстальщик или — чаще всего. сам программист! Смешно, правда?
Теперь следствие, про отделение PHP от HTML. Отлично. Перед нами стоит святая цель отделить. Поэтому мы придумываем Смарти и пишем:
Ещё смешнее.
«Дизайнер», ради которого все затевалось, падает в обморок от счастья.
Теория
Получается, что наши причины, по которым мы решили пользоваться шаблонами, гроша выеденного не стоят. И что же теперь — не нужны, выходит, шабоны вообще? Нужны. Но сначала надо ответить себе на вопрос — «зачем?» Для чего нужны шаблоны. И проверить ответ практикой. Я много раз задавал людям этот вопрос. Но почти никто не может на него ответить. Зачем ему нужны шаблоны. Получается, люди делают что-то, не зная зачем.
Это — самое смешное.
За время своей деятельности в качестве веб-программиста я сформулировал для себя три причины, по которым нужны шаблоны лично мне. По сути, их две. А сводятся, в конечном счете, к одной:
Один код — несколько представлений.
Часто бывает так, что вместо одной информации надо показать другую. Например, код работы с БД получает вместо текста новости сообщение об ошибке. В этом случае вместо страницы новости нужно показать совсем другую — с извинениями и просьбой зайти позже. С помощью шаблонов это делается элементарно.
Часто одну и ту же информацию надо показывать в нескольких видах. К примеру — обычная страница и страница для печати. Информация та же самая, код её получения один и тот же, а код вывода — разный. Столкнувшись с такой ситуацией, очень быстро разделишь свой код на две части, одна из которых отвечает за вывод, а вторая — не отвечает. Еще пример: допустим, нам захотелось выводить информацию не напрямую в HTML, а через AJAX-запрос, в формате JSON. Если у нас использовался шаблонизатор, то мы меняем в нашем коде ровно одну строчку — вызов шаблонизатора на вызов json_encode() . А если бы у нас вывод был перемешан с кодом получения данных, то код бы пришлось переписывать весь!
В чем-то похожая ситуация: допустим, наш скрипт стоит на двух сайтах. Плюс копия у нас дома. И вот дома мы нашли крупную багу. Заделали её. Теперь надо обновить код на сайтах. И вот он — момент истины: если шаблоны были использованы правильно, то мы просто заливаем код на оба сайта, и все продолжает работать, как ни в чем не бывало! Такая ситуация, как я считаю — идеальная проверка выбранного подхода к шаблонизации.
Ещё один важный момент, который многие упускают (в своих теоретических рассуждениях, при этом постоянно сталкиваясь с ним на практике!) — порядок выполнения скрипта не всегда совпадает с порядком вывода в шаблоне. Хрестоматийный пример — вывод заголовка статьи в теге . Если мы выводим информацию по мере поступления, то просто не сможем этого сделать — шапка сайта уже выведена, к моменту, когда мы начали получать текст новости.
Следует также помнить, что кроме текста РНР скрипты еще и выводят HTTP заголовки. Которые обязаны выводиться до любого текста, или даже вместо текста вообще (если мы например хотим перенаправить пользователя на другую страницу). Если мы сначала реализуем логику работы приложения, ничего не выводя при этом, то выдать нужный НТТР заголовок не составит для нас никакой проблемы.
У вас могут быть и свои причины использовать шаблоны. Но только с одним условием — эти причины должны быть вызваны реальной, жизненной необходимостью, а не «высшими соображениями» и заботой о каких-то неизвестных вам людях.
Практика
Теперь от теории перейдем к практике.
В самом простом случае в показе любой страницы у нас всегда будут участвовать два шаблона: общий шаблон сайта и шаблон контента конкретной страницы.
Допустим, мы хотим сделать страницу со ссылками на сайты друзей.
В этом случае код упрощенный код будет выглядеть так:
сам файл links.php. НИЧЕГО не выводит. Только готовит данные и после этого вызывает шаблон.
//инклюдим настройки.
include ‘settings.php’ ;
//получаем данные из базы, определяем переменные
$pagetitle = «Ссылки» ;
$DATA = $db -> getAll ( «SELECT * FROM links» );
Реализация шаблонов на PHP
Сегодня мы рассмотрим создание класса шаблона для своей CMS. Класс шаблонов это незаменимая часть любого сайта. Класс простой без использования кэширования. Принцип работы: загрузка шаблона, замена переменных в шаблоне и вывод шаблона.
Сегодня существует много мощных классов для работы с шаблонами, например такой тяжеловес как Smarty или другой подобный ему. Но для небольшого проекта можно использовать простой шаблонизатор на PHP.
Возможности:
1. Замена вставок на заданный текст
2. Подключение шаблонов в шаблоне
3. Выделение блоков в шаблоне
данный код шаблона будет выведен только при использовании команды
При использовании в цикле можно выводить блок много раз.
Переменные в блоке должны быть вида
Создадим в корне сайта папку template для хранения шаблонов и папку includes, в этой папке создадим файл mytemplates.php.
Откроем его в Notepad++, и создаем класс
В созданном классе объявим переменные:
Наш класс шаблонов будет состоять из 6 функций
set_file — выбор файла шаболона
set_vars — установка нескольких переменных
set_block_vars — установка переменных в определенном блоке
load_file — загрузка шаблона
display — вывод результата
И так функция выбора файла шаблона, тут ничего сложного
Функция установки переменных, которые заменяются в шаблоне
Установка переменных для определенного блока.
Без вызова этой функции блок выделенный тегами в шаблоне не будет выводиться.
Документация по макросам и шаблонам UMI.CMS
Начало работы с PHP-шаблонизатором
Настройки шаблона
Для того, что бы начать работу c шаблонизатором, необходимо перейти в настройки модуля “Структура” и на вкладке “Управление шаблонами” создать новый шаблон, после чего зайти в настройки созданного шаблона и выставить параметр тип шаблона в php .
Имя файла произвольное, например: default.phtml .
Файлы шаблона должны располагаться в директории:
В корне директории необходимо создать файл, с именем заданным в настройках.
Базовый шаблон
В простейшем виде базовый шаблон может выглядеть следующим образом:
/** @var umiTemplaterPHP $this */ ?>
/** @var array $variables */ ?>
$variables[‘@title’] ?>
Первые 2 строки:
/** @var umiTemplaterPHP $this */ ?>
/** @var array $variables */ ?>
подсказки IDE для вывода autocomplete.
Для организации иерархичной структуры хранения шаблонов можно воспользоваться следующей конструкцией:
$this -> render( $variables , $variables [ ‘@module’ ] . ‘/’ . $variables [ ‘@method’ ]) ?>
Шаблонизатор на PHP
Меня многократно просили дать код шаблонизатора на PHP, которым я пользуюсь. Но прежде чем перейти к этому коду, давайте немного расскажу о наиболее популярном шаблонизаторе — Smarty. Сразу скажу, что я всегда был против всех этих чужих и огромных библиотек. Но Smarty я стерпел и некоторое время использовал, а потом я подумал: «А зачем мне нужна эта помойка, если от шаблонизатора мне нужен минимум функциональности?«.
Действительно, а что вообще нужно от шаблонизатора? От него нужно лишь подставлять в нужные места tpl-файлов определённые переменные из PHP. Все говорят, что PHP-код в tpl-файлах — это плохо. А чем лучше Smarty-код в tpl-файлах? Да абсолютно ничем, и это даже хуже, поскольку этот Smarty-код потом преобразуется в PHP-код и выполняется.
Smarty уже так сильно разошёлся, что стал вообще отдельным языком со своим синтаксисом, со своими циклами и условиями. Разве это требуется от шаблонизатора?
Задача шаблонизатора — только подставлять определённые значения в определённые места, а все циклы я могу написать и на PHP, и промежуточный язык для этого не требуется.
Итак, привожу код своего шаблонизатора, которым я настоятельно рекомендую Вам пользоваться:
/* Метод для добавления новых значений в данные для вывода */
public function set($name, $value) <
$this->data[$name] = $value;
>
/* Метод для удаления значений из данных для вывода */
public function delete($name) <
unset($this->data[$name]);
>
/* При обращении, например, к $this->title будет выводиться $this->data[«title»] */
public function __get($name) <
if (isset($this->data[$name])) return $this->data[$name];
return «»;
>
/* Вывод tpl-файла, в который подставляются все данные для вывода */
public function display($template) <
$template = $this->dir_tmpl.$template.».tpl»;
ob_start();
include ($template);
echo ob_get_clean();
>
>
Всего 1 файл размером 0.5 КБ, вместо больше 100 файлов и примерно 1 МБ (в 2000 раз больше). Но при этом всё самое важное данный класс сделает.
Теперь создадим tpl-файл (пусть называется menu.tpl), который будет без проблем обработан этим шаблонизатором:
И, наконец, давайте напишем PHP-файл, который будет вызывать шаблонизатор:
set(«menu», $menu);
$template->display(«menu»);
?>
Если бы мы использовали Smarty, то у нас было бы всё ровно так же, но в tpl-файле мы бы написали код Smarty, который потом бы заменялся на PHP и выполнялся. А мы же сразу написали этот PHP-код. И какой смысл учить отдельный язык, который будет лишь тормозить работу, а также требует наличие огромной библиотеки?
Надеюсь, данная статья Вам покажет, что не нужно гнаться за бессмысленной функциональностью Smarty. Всё это в гораздо большем объёме есть в PHP, а задача шаблонизатора всего лишь одна — подставлять в tpl-файлы значения, полученные из PHP. Всё.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (https://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: https://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: https://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 73 ):
Там в цикле foreach ($this->menu as $name => $link) ключ и значение поменять местами нужно)
Не получается передать переменную из .php в .tpl файл. Обращался в вашу тех поддержку (давно уже) сказали подождать — все еще жду. Может объясните как это сделать и можно ли обойтись без массива ?
Задайте свой вопрос снова в службу поддержки Возможно он затерялся
А для чего вообще этот шаблонизатор? Можно чуточку поподробнее об этом для чайников? 🙂
Для движков он нужен, чтобы не смешивать лишний раз HTML и PHP.
Очень полезная штука. С помощью такой технологии вполне можно создать собственную cms, не чем не уступающую ныне известным, но она будет намного быстрее, намного меньше весить, к тому же вы сможете реализовать лишь те функции, которые вам нужны и сделать абсолютно любой уникальный дизайн. Спасибо Михаил за вашу помощь!
А как сделать чтобы автоматом если есть в файле базовые переменные, например
заменялись на переменные из конфиг файла?В конструкторе Template сразу через метод set() добавить все эти всегда присутствующие конструкции.
Но ведб в классе нету метода для замены чего-либо, а мне нужно просто заменить. Расскажите подробнее пожалуйста
Метод set фактически и подготавливает набор данных для будущей подстановки в шаблоне.
Ваш класс конечно хороший, но мне кажется что этот немного лучше https://malinichev.ru/lesson/php-html-template.html как вы считаете?
Михаил, я всё таки решил испробовать ваш класс в деле, и попал на неожиданную проблему, как мне выводить переменные в шаблоне, если массив у меня двухмерный, при выводе вашего массива menu выходит нечнто такое: Array ( [https://site.ru] => Главная [https://site.ru/page-1.html] => Страница 1 [https://site.ru/page-2.html] => Страница 2 ), а при выводе моего массива выходит такое: Array ( [0] => Array ( [id] => 1 [username] => Владислав Малиничев ) ) Как поступить в такой ситуации, шаблонизатор использую в паре с вашим классом для бд.
Всё разобрался, даже когда цикл по логике не нужен, через него всё равно нужно прогонять в шаблоне. Вы бы это сразу объяснили, а то голову ломал 4 часа. Ну вы сами подумайте, зачем нужен цикл, когда я вывожу только данные одной таблицы где поле равно числу, там ведь не нужен цикл, я прав? Или это у меня уже мозги плывут в нехорошую сторону?
Для вывода массива нужен цикл, по-другому не бывает.
Работа с Шаблонами PHP
Поясню на примере.
Вот пример шаблона.
В скрипте создаётся класс шаблона. Далее ему передаются значения переменных шаблона.
Метод находит в шаблоне переменные
Здесь всё ОК.
А, допустим, как можно будет выводить с помощью шаблонов список форумов?
Ведь там используется цикл для вывода названия форума, описания, кол-ва тем и пр.
В шаблоне можно написать так (в самом простом варианте):
Но этот блок ведь надо будет выводить для каждого форума. Т.е. значения переменных шаблона будут меняться. Как вариант, можно весь этот блок использовать как переменную, значение которой будет задано в скрипте, но там может (и, наверняка, будет) использоваться HTML, а это уже выходит за рамки «Код — отдельно, дизайн — отдельно», ради которых, собственно, и использую шаблоны. Есть предположение парсить страницу по кускам. Т.е. сначала вывожу этот блок для одного форума, затем для следующего и т.д. Но понятия не имею, как это правильнее было бы реализовать. Если вообще правильно.
P.S. Просьба не предлагать использовать сторонние шаблоны.
1. St. SergioS , 11.09.2004 00:54 |
ну сделай отдельный шаблончик для списка и скорми уже сформированный код своему классу. это если не заморачивацца. |
2. Anar , 11.09.2004 01:31 |
St. SergioS Хотелось бы, чтоб все шаблоны были стандартными и сидели в одном файле для каждой странице. Ну если не учитывать header и footer. |
3. St. SergioS , 11.09.2004 01:37 |
ну тогда изобретай лисапед или генерируй код сам. список форумов, в общем-то, вполне стандартно выглядит и его дизайн не меняется раз в неделю |
4. Чебурген , 11.09.2004 01:57 |
не нужно отдельного шаблончика. стандартным средством в таких случаях является объявление блоков Сложнее для парсинга, конечно, но зато соблюдается шаблонная идеология, и не надо ползать по сотне файлов-шаблонов из одной строки. |
5. Anar , 11.09.2004 02:00 |
St. SergioS а как быть с другими списками-то? вообще как можно сгенерировать список по шаблону? я вообще не въезжаю (поздно, наверное, поэтому), в вся документация посвящена работе с готовым шаблонами. Ну не хочу я ставить 600 кб smarty. Добавление от 11.09.2004 02:02: Чебурген |
6. Чебурген , 11.09.2004 02:09 |
ну, как. я шаблонных движков не писал регом выдергиваешь название блока и текст между тегами. и дальше работаешь с полученным текстом, как с отдельным шаблоном, причем — в цикле. весь вывод собираешь в переменную, а потом денлаешь стр_реплейс старого куска на новый. я думаю — так. Добавление от 11.09.2004 02:09: или посмотри, действительно, как в других движках сделано |
7. St. SergioS , 11.09.2004 02:10 |
а как быть с другими списками-то?
а какая разница? скрипт у тебя отдает какую-то информацию. если это список то, вероятно, отдает он ее в цикле или массивом. вот и вызывай свой класс в цикле с нужным шаблоном. результат складируй в переменную, которую затем скорми основному шаблону. в случае цикла логично будет предусмотреть средства кеширования. Я объявил этот блок в шаблоне. А как с ним работать в классе? написать парсер это то, что я назвал лисапедом. Добавление от 11.09.2004 02:14: кстати насчет смарти — он кеширует шаблоны и относительно долго работает при первом вызове, потом существенно быстрее. |
8. Anar , 11.09.2004 02:38 |
Надо будет подумать о блоках. Сейчас мало что соображаю. Буду рад, если дадите ссылку на хорошую документацию по сабжу. Завтра сообщу о результатах. |
9. RedWolf , 11.09.2004 12:21 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Anar Не изобретай велосипед, а используй XSLT. Ибо его поддержка есть в PHP. Вот пример кода:
|