Сразу скажу, что я уже писал об этой теме здесь: использование tpl-файлов . Однако, не все поняли данный материал, и я решил к нему вернуться и написать всё немного по-другому. Не секрет, что любой серьёзный движок никогда не будет смешивать в своём коде HTML и PHP . Однако, HTML и PHP коды очень тесно взаимосвязаны...
Сразу скажу, что я уже писал об этой теме здесь: использование tpl-файлов. Однако, не все поняли данный материал, и я решил к нему вернуться и написать всё немного по-другому. Не секрет, что любой серьёзный движок никогда не будет смешивать в своём коде HTML и PHP. Однако, HTML и PHP коды очень тесно взаимосвязаны, поэтому для того, чтобы не нарушать правила "хорошего тона", были придуманы tpl-файлы. Данные файлы служат для хранения HTML-кода с элементами шаблонов, которые подставляются в PHP-коде. Давайте подробнее разберём использование tpl-файлов с примером.
Возьмём с Вами самый элементарный пример - это панель пользователя, где есть его аватарка и приветствие по имени. Первым делом, создадим tpl-файл, и пусть он называется userpanel.tpl. Напоминаю, что это всего лишь кусок HTML-кода с элементами шаблона:
<p>Здравствуйте, %name%!</p>
<p>
<img src="%avatar%" alt="Аватарка" />
</p>
Ничего сложного, это просто обычный HTML-код. Только вместо определённых значений стоят %элементы_шаблона%.
Теперь разберёмся с PHP-обработкой. Здесь всё будет более, чем абстрактно, но, к сожалению, по-другому никак. Главное - это понять принцип работы. И так PHP-код для обработки созданного tpl-файла:
<?php
/* Данная функция, хоть и использует буферы, но суть элементарна: вернуть содержимое файла */
function getTemplate($name) {
ob_start(); // Начинаем сохрание выходных данных в буфер
include ($name.".tpl"); // Отправляем в буфер содержимое файла
$text = ob_get_clean(); // Очищаем буфер и возвращаем содержимое
return $text; // Возвращение текста из файла
}
$name = "Николай"; // Извлекается из базы
$avatar = "avatars/user_15.jpg"; // Извлекается из базы
/* Начинается замена элементов шаблона на реальные данные */
$userpanel = str_replace(
array(
"%name%",
"%avatar%"
),
array (
$name,
$avatar
),
getTemplate("userpanel")
);
echo $userpanel; // Выводим окончательный результат
?>
Это простейший вариант. Всё прокомментировано, поэтому вопросов по этому примеру возникнуть не должно. И по сути любая страница состоит из таких вот блоков. Ваша задача взять нужные блоки (функция getTemplate()), заменить нужными данными (функция str_replace() и данные полученные, например, из базы), а потом просто соединить все блоки, как обычные строки, и вывести всё на страницу.
Безусловно, без ООП здесь очень проблемно будет. Вы такое количество условий наплодите (страниц же много), что быстро запутаетесь. Но принцип использования tpl-файлов, надеюсь, Вы осознали. Дальше уже самостоятельно подумайте, как всё это обернуть в ООП, чтобы всё было максимально простым с точки зрения понимания кода и его сопровождения в будущем.
