Шаблоны


Шаблоны
Разделение оформления и содержания - извечная проблема веб-разработчика.
Разделение оформления и содержания - извечная проблема веб-разработчика. Для держателя небольшого сайта в несколько страниц такой проблемы не возникает. Изменение дизайна, либо другая правка внешнего вида страниц для него не представляет трудностей. Однако для крупных веб-ресурсов, порталов смешение этих двух важнейших компонентов сайта: оформления и содержания - просто недопустимо. Иначе сайт становится настолько неповоротлив, что владелец ресурса теряет над ним управление.

Столкнувшись однажды с такой проблемой, сайтостроители начали ломать голову над тем, как сделать так, чтобы информация не привязывалась никоем образом к дизайну и наоборот, чтобы внешний вид всего сайта менялся буквально одним движением руки. Необходимо сказать, что способа идеального разделения оформления и содержания в наши дни пока не найдено. Но все же созданы определенные наработки и технологии, которые позволяют максимально приблизиться к этому идеалу. Прежде всего это технология использования шаблонов.

Что есть шаблон?

Понятие "шаблон" довольно обширное. Но чаще всего под шаблоном понимается некий документ (обычно в формате HTML), содержащий в себе все оформление ресурса, либо только его части, а также специальные метки, которые в процессе генерации страницы заменяются на информационные данные.

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

Наверное, во всех языках вебпрограммирования есть подобные инструменты для работы с шаблонами: в Perl это FastTemplate (который, кстати, существует и для PHP, но его использование не рекомендуется, так как приемлемые для работы версии относятся еще к третьей версии PHP), в отношении PHP - это крупный и многофункциональный Smarty, а также ряд других более мелких "шаблонизаторов".

Smarty.

Smarty - одна из самых крупных разработок подобного рода. Реализован он, как и практически все приложения подобного типа, в виде класса.

Этот "шаблонизатор" имеет огромное количество возможностей: он не только осуществляет замену выделенных участков шаблона указанными данными, но и предоставляет использование внутри шаблона исполняемых участков, функций, конфигурационных файлов и прочее.

Описывать все его возможности и правила использвования не имеет смысла, так как на это потребуется не один и не два урока, к тому же к нему написана довольно хорошая документация, а примеры использования прилагаются к самому Smarty.

Smarty - это настоящий монстр по работе с шаблонами. Но, как понимаете, за столь широкую функциональность приходится платить ресурсами сервера и временем исполнения скрипта на его основе. В некоторых случаях из-за своей громоздкости Smarty кажется неповоротливым. Поэтому для сравнительно небольших проектов использование Smarty - обычно далеко не лучший выбор. В этом случае следует обратить свой взор на более мелкие и менее функциональные, но тем не менее достойные инструменты.

Другие инструменты для работы с шаблонами.

Здесь я хочу обратить ваше внимание на "шаблонизаторы" на основе функции eval(). Эта функция расценивает код, заданный в ее аргументе, как код PHP и, соответственно, исполняет его. Например:

$text = 'Hello, $name $fam!';
$name = "John";
$fam = "Mayers";
eval('echo "' . $text . '";');

Этот примитивный пример работы с мини-шаблоном выведет "Hello, John Mayers!".

Преимущество данного типа инструментов работы с шаблонами связано с тем, что от разработчика заранее не требуется определять текст или другую информацию для меток в шаблоне (в нашем примере таковыми метками служат слова $name и $fam). Также такие "шаблонизаторы" значительно выигрывают по скорости.

Разовьем пример выше и напишем функцию, которая будет извлекать шаблон из файла:

function getTemplate($template, $ext = "htm") {
$templatefolder = "templates"; // папка для хранения шаблонов
return str_replace("\"","\"", implode("", file($templatefolder."/".$template.".".$ext)));
}
$name = "John";
$fam = "Mayers";
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;
$id = (int)getenv("QUERY_STRING"); // извлекаем номер урока из строки запроса

mysql_connect("host", "root", "root");
mysql_select_db("myphp");
$query = "SELECT * FROM lessons WHERE id = '$id'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);

if ($id > 1) $prev = "<a href='?".($id - 1)."'>Назад, на урок ".($id - 1)."</a>";

$query = "SELECT COUNT(*) FROM lessons";
$result = mysql_query($query);
$max = mysql_result($result, 0);

if ($id < $max) $next = "<a href='?".($id + 1)."'>Дальше, на урок ".($id + 1)."</a>";
eval('echo "'.$tpl->get("page").'";');

Это простой пример страницы, имеющей несложную структуру. Но даже на таком примере видно, как шаблоны упрощают создание веб-приложений.

В заключение.

Конечно, здесь мы разобрали лишь крохотную часть этой обширной темы работы с шаблонами и рассмотрели лишь малую долю инструментов работы с шаблонами. Но хотелось бы сказать, что не так уж важно, каким образом вы работаете с шаблонами и какие средства вы используете, намного важнее то, как вы с ними работаете. Научиться грамотной работе с шаблонами не так-то просто, понимание этого приходит только с практикой, и тут я не могу дать определенных советов.

© r-i-p.info

Оценить Статью:  
1   2   3   4   5   6   7   8   9   10    

« Назад
SAPE все усложнил?

MainLink - простая и прибыльная продажа ссылок!

Последние поступления:

Стишки пирожки про Олега⁠⁠

Размещена 20 июня 2024 года

Олег купил презервативы
Проник в семидесятый год
И подарил их папе с мамой
Такой нелепый суицид

читать далее…

Размещена 10 августа 2020 года

Я по ТВ видел, что через 10 лет мы будем жить лучше, чем в Германии...
Я не понял, что это они с Германией сделать хотят?!

читать далее…

ТехЗадание на Землю

Размещена 14 марта 2018 года

Пpоект Genesis (из коpпоpативной пеpеписки)

читать далее…

Шпаргалка по работе с Vim

Размещена 05 декабря 2017 года

Vim довольно мощный редактор, но работа с ним не всегда наглядна.
Например если нужно отредактировать какой-то файл например при помощи crontab, без знания специфики работы с viv никак.

читать далее…

Ошибка: Error: Cannot find a valid baseurl for repo

Размещена 13 сентабря 2017 года

Если возникает ошибка на centos 5 вида
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/

читать далее…