Шаблонизация сайта с помощью Smarty

У большинства сайтов законченный вид (дизайн). Хотя динамический контент в середине страницы может меняться заголовок, навигационная строка и нижняя часть сайта. Чтобы добиться такого эффекта, существует несколько простых способов: от функции вывода заголовков до подключения файлов. В зависимости от размера вашего сайта, то или иное решение будет работать, тем сложнее будет вносить изменения. 

Наиболее признанным решением для шаблонизации является Smarty (http://smarty.php.net). Smarty позволяет создавать шаблоны с переменными. Другими словами, Вы можете создавать HTML-файл и указать размещение той или иной РНР-переменной. В дополнение к этому Вы можете подключать в Ваш шаблон другие Smarty-шаблоны, что позволит вам более эффективно организовать свой сайт и облегчит редактирование шаблона. Smarty также позволяет кэшировать данные, что ускорит доступ к вашему сайту, данная особенность Smarty выходит за рамки этой статьи. 

Установка Smarty

1. Создайте каталог на вашем сервере (в пределах корневой директории Web-сервера) и назовите его Smarty — здесь будут храниться основные файлы Smarty.

2. Загрузите Smarty со следующего сайта http://smarty.php.net и распакуйте архив в любой каталог локального компьютера.

3. Перенесите файлы Smarty с локального компа в каталог smarty на вашем сервере.

4. На вашем сервере создайте еще один каталог — templates, здесь будут храниться шаблоны Smarty. В этом каталоге нужно создать два подкаталога: html для «сырых» шаблонов и compile для уже «откомпилированных» шаблонов.

5. Подкаталог compile нужно сделать доступным для записи. Если вы не знаете, как это сделать, обратитесь к разделу «Права доступа к файлам».

6. В каталоге шаблонов (smarty) создайте (или загрузите) файл smarty_initialize.php со следующим содержимым:

<?php
define ("SMARTY_DIR", "/path/to/web/roor/smarty/");
require_once (SMARTY_DIR."Smarty.class.php");
$smarty=new Smarty;
$smarty->compile_dir="/path/to/web/root/templates/compile";
$smarty->compile_dir="/path/to/web/root/templates/html";
?>

Обратите внимание на четыре следующих нюанса файла smarty_initializa.php:

* Константа SMARTY_DIR содержит каталог, содержащий библиотеки Smarty.
* Для загрузки библиотеки smarty_initializa.php нужен файл Smarty.class.php.
* Поскольку Smarty объектно-ориентирован, вы должны создать новый объект Smarty. Это делает строка $smarty=new Smarty.
* Smarty должен знать, где находятся каталоги шаблонов и откомпилированных шаблонов (template_dir и compile_dir) соответственно. 

На этом установка Smarty можно считать завершенной.

Краткое руководство по Smarty

Как ясно из файла smarty_initialize.php представленного выше, шаблоны Smarty должны находиться в каталоге templates/html. Файлы шаблонов могут содержать HTML, JavaScript и СSS-код, а так же все, что можно отправить в Веб-браузер. Предположим, что у нас есть какой-то базовый шаблон basic.tpl. Чтобы Smarty отобразил этот шаблон, нужно использовать метод Smarty, как показано ниже:

<?php
require_once ("smarty_initialize.php");
$smarty->display("basic.tpl");
?>

Чтобы осознать всю мощь и гибкость Smarty, вам нужно поместить в шаблон данные, инициализируемые РНР-кодом. Чтобы добавить в шаблон вывод РНР-переменной, нужно заключить ее имя (со знаком $) в фигурные скобки. Выглядеть это должно примерно на шаблоне basic.tpl примерно так:

<HTML>
<head>
<title>{$assigned_title}</title>
</head>
<body>
My name is {$assigned_name}.
</bod>

Как видно из листинга, имеются две переменные — $assigned_title и $assigned_name. Для установки значений этих переменных нужно использовать метод assign():

<?php
require_once ("smarty_initialize.php");

$page_title="The Smarty Test";
$page_name="Ivan Pupkin";

$smarty->assign("assigned_title", $page_title);
$smarty->assign("assigned_name", $page_name);

$smarty->display("basic.tpl");
?>

Вы можете присвоить переменной любую строку, вне зависимости от того, что она содержит — HTML-код, данные из базы данных MySQL, пользовательский ввод или что-то еще. На этом всё!

Метки записи: