Русская документация для фриланесеров
Главная arrow PHP arrow PHP-шаблоны или, как помирить программиста с верстальщиком  
08.01.2009 г.
Главное меню
Главная
Поиск
PHP
.NET
Java
Ruby
C++
Delphi
Другие языки
Базы данных
Безопасность
Сети
ОС
Мобильные
Теория дизайна
WEB
Разное
Админцентр



спутниковое телевидение нтв. Сервис заказ такси. Заказ и вызов такси. Такси Москва Восточная. www.kod-da-vinchi.ru. На веб-странице этой организации найдете - Утилизация. Лиц №569250 - заходите

PHP-шаблоны или, как помирить программиста с верстальщиком Печать E-mail
Автор Westry   
17.03.2008 г.
Современный Web-сайт - это продукт совместного труда дизайнера, программиста, верстальщика и контентщика (автора публикуемого на сайте материала). При разработке HTML протокола такое разделение труда не предполагалось. Другими словами, HTML позволяет формировать статические документы, изменение фрагментов которых со временем возможно только с привлечением верстальщика.

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

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

Одно из решений этой задачи: использование шаблонов для разделения кода мы здесь рассмотрим [1].

Как это работает

В своей работе С. Шуманн переработал известный Perl пакет FastTemplate в соответствующий PHP класс. Методы assigne и parse этого класса позволяют определить значения переменных файла шаблона и сформировать Web-документ, соответственно. Схема генерации Web-документа приведена на следующем рисунке:

inet204_01
Здесь tpl обозначен наследник класса FastTemplate.

Помещение FastTemplate переменных в HTML шаблон

HTML шаблон - это текстовый файл, который содержит HTML теги и переменные. Переменные могут состоять из алфавитно-цифровых символов и знака подчеркивания {(A-Я 0-9) _} - тех символов, которые может анализировать класс FastTemplate. Здесь важно понимать, что переменная "должна бросаться в глаза" верстальщику. Иначе он ее может удалить из шаблона.

Создадим в папке templates три шаблона main.tpl, rows.tp и table.tpl:

<!-- main.tpl -->
<HTML><HEAD><TITLE>Формирование таблицы из данных базы</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<BODY>
<!-- Поле для фантазий дизайнера и работы верстальщика -->

<P><B>Фамилия</B>
=FieldRECORD=

<!-- Поле для фантазий дизайнера и работы верстальщика -->
</BODY></HTML>

<!-- rows.tpl -->
<TR>
<TD>=LastVar=</TD>
</TR>

<!-- table.tpl -->
<TABLE>
=ROW=
</TABLE>

Здесь =FieldRECORD=, =LastVar= и =ROW= - переменные файлов шаблонов.

Определение переменных шаблонов и формирование HTML документа

Поместим вне папки templates файл класса FastTemplate и скрипт index.php, который будет содержать следующий код:

<?
Header("Content-type: text/html; charset=windows-1251");

// включаем файл класса FastTemplate в PHP код
include("class.fasttemplate.php");
// создаем новый экземпляр tpl класса FastTemplate
$tpl = new FastTemplate("./templates");
// отобразим имена файлов шаблонов на имена-константы, чтобы
// по ним ссылаться на шаблоны
$tpl->define(array("toplevel" => "main.tpl",
"table" =>"table.tpl",
"rows" => "rows.tpl"));

// соединяемся с сервером mySQL
$db = mysql_connect("localhost", "root", "");
// выбираем базу данных learndb
mysql_select_db("learndb",$db);
// выбираем данные из поля Lastname базы
$GetData = mysql_query("SELECT Lastname FROM Personnel");

// Формирование документа resHTML
if ($myRow = mysql_fetch_array($GetData)) {
do {
// сохранение значения поля Lastname первой
//записи в переменной
$Name = $myRow["Lastname"];
// определим значение переменной =LastVar=
// (шаблон rows.tpl) равным текущему значению $Name
$tpl->assign("=LastVar=", $Name);
// конкатенируем образованные по шаблону
// rows.tpl строки в таблицу
$tpl->parse("=ROW=", ".rows");
}while ($myRow= mysql_fetch_array($GetData));

// "собираем" таблицу
$tpl->parse("=FieldRECORD=", "table");

// "собираем" HTML документ и отправляем его браузеру
$tpl->parse(resHTML, "toplevel");
$tpl->FastPrint();
}

// если данные отсутствуют в таблице Personnel, то сообщаем об ошибке
else {
print("Error obtaining data");
}
?>

Во время выполнения приложения форма будет иметь следующий вид:

inet204_02

В окне браузера отображены данные поля Lastname таблицы Personnel. Она создавалась скриптом.

CONNECT learndb

CREATE TABLE personnel
(
id int NOT NULL AUTO_INCREMENT,
firstname varchar(25),
lastname varchar(20),
nick varchar(12),
email varchar(35),
PRIMARY KEY (id),
UNIQUE id (id)
);

INSERT INTO personnel VALUES ('1','John','Lever','John',
' Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ');

INSERT INTO personnel VALUES ('2','Лариса','Муштай',
'Ивановна',' Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ');

Литература и ресурсы

  • 1. Sascha Schumann. Templates - why and how to use them in PHP3 - http://www.phpbuilder.com/columns/
  • 2. Денис Давыдов. Использование шаблонов в PHP4 - http://www.webscript.ru/print.php3?story=01/04/19/3683838
  • 3. Ian Felton. PHP Fast Template - http://www.devshed.com/Server_Side/PHP/PHPFastTemplate/

P. S. Выражаю особую благодарность Литвиненко А. Ю.

 

 

А. Чекалов

 
« Пред.   След. »
Webdesign by Webmedie.dk Webdesign by Webmedie.dk