Простейший шаблонизатор

Home  >>  Программирование  >>  Php  >>  Простейший шаблонизатор

Простейший шаблонизатор

7
Апр,2011

0

Для одного из проектов понадобился мне шаблонизатор. Подключать Smarty не имело смысла. Так как лишний вес был не нужен.
По быстрому накидал шаблонизатор(ик). Который хочу Вам выложить. Может кому то понадобиться тоже.
Создаём новый файл tpl.class.php и начинаем писать простейший шаблонизатор.

<?php
// Создаём клас с которым будем работать
class Tpl_Class
{
//Определяем переменные
var $val = array();
var $Tpl;
// Функция загрузки шаблона
function tpl_get($tpl_name)
{
// Проверяем на существование переменной
if(empty($tpl_name) OR !file_exists($tpl_name))
{
// Если нет шаблона то выводим ошибку и останавливаем скрипт
die('Error template');
}
else
{
// Если ошибок нет то подключаем шаблон.
// file($tpl_name) пишем файл в массив
// implode объединяем массив в строку
$this->html = implode('', file($tpl_name));
}
}
// Функция установки переменных для шаблона
function set_value($key,$var)
{
$key = '{'.$key.'}';
$this->val[$key] = $var;
}
// Функция которая заменяет во всё шаблоне наши переменные на значения
function tpl_parsing()
{
foreach($this->val as $find => $replace)
{
$this->html = str_replace($find, $replace, $this->html);
}
}
}

Далее делаем два действия. Создаём файл index.php куда будем подключать наш шаблонизатор и папку с шаблоном.
Папку с шаблоном я назвал template и положил в него файл index.tpl. В файле с шаблоном напишем html код который будет отображаться на сайте

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>{TITLE}</title>
<style type="text/css">
body {background: #4E5869;margin: 0;padding: 0;color: #000;}
a:link {color:#414958;text-decoration: underline;}
a:visited {color: #4E5869;text-decoration: underline;}
a:hover, a:active, a:focus {text-decoration: none;}
.container {width: 80%;min-width: 780px;background: #FFF;margin: 0 auto;}
.header {background: #6F7D94;}
.content {padding: 10px 0;}
.footer {padding: 10px 0;background: #6F7D94;}
</style></head>

<body>

<div class="container">
<div class="header"><a href="#"><img src="" alt="Место для логотипа" name="Insert_logo" width="20%" height="90" id="Insert_logo" style="background: #8090AB; display:block;" /></a>
</div>
<div class="content">
<h1>{TITLE_PAGE}</h1>
<p>{CONTENT}</p>
</div>
<div class="footer">
<p>{COPY}</p>
</div>
</div>
</body>
</html>

Как мы видим у нас есть в шаблоне метки {TITLE}, {TITLE_PAGE}, {CONTENT}, {COPY}.
В эти метки мы и будем вставлять свои данные.
В ранее созданный файл index.php пишем всё для того чтоб наш код заработал.

<?php
DEFINE('DIR_T', 'template/');// определяем путь к папке с шаблонами
include_once DIR."tpl.class.php";// Подключаем класс с шаблонизатором

$tpl=new Tpl_Class;// Создаем новый класс
$tpl->tpl_get(DIR_T.'index.tpl');//Подключаем шаблон
$tpl->set_value('TITLE', 'Микро шаблонизатор'); // Title страницы
$tpl->set_value('TITLE_PAGE', 'Шаблонизатор 21 Века'); // Загаловок страницы
// Ниже пишем контент страницы
$tpl->set_value('CONTENT', '<b>Шаблонизатор (в web)</b> — это программное обеспечение, позволяющее использовать html-шаблоны для генерации конечных html-страниц. Основная цель использования шаблонизаторов — это отделение представления данных от исполняемого кода. Часто это необходимо для обеспечения возможности параллельной работы программиста и дизайнера-верстальщика. Использование шаблонизаторов часто улучшает читаемость кода и внесение изменений во внешний вид, когда проект целиком выполняет один человек.');

$tpl->set_value('COPY', '&copy; Peredero Ivan 2011');// Копирайт
$tpl->tpl_parsing(); // Теперь обрабатываем заменяя переменные в шаблоне на наши данные
echo $tpl->html;// Выводим обработанный шаблон на экран

Думаю написал всё подробно и ясно.

Статья защищена

Добавить комментарий

Ваш e-mail не будет опубликован.

Яндекс.Метрика