Сразу скажу, что я уже писал об этой теме здесь: использование tpl-файлов . Однако, не все поняли данный материал, и я решил к нему вернуться и написать всё немного по-другому. Не секрет, что любой серьёзный движок никогда не будет смешивать в своём коде HTML и PHP . Однако, HTML и PHP коды очень тесно взаимосвязаны...

Использование tpl-файлов

Сразу скажу, что я уже писал об этой теме здесь: использование 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-файлов, надеюсь, Вы осознали. Дальше уже самостоятельно подумайте, как всё это обернуть в ООП, чтобы всё было максимально простым с точки зрения понимания кода и его сопровождения в будущем.