Skip to content
Andrey Serebryakov edited this page Jun 16, 2011 · 2 revisions

Использование PHP в шаблонах

Включение файлов на лету в публикуемых файлах

Для обеспечения быстродействия при публикации шаблонов желательно вынести отдельные, однотипные части шаблонов в файлы, которые будут публиковаться единожды, а затем включаться в остальные страницы при помощи PHP.

Как это сказывается на производительности

Представьте, что у вас 200 записей. Вы публикуете их. Данные в записи — это запросы к базе данных. Чем больше запросов — тем больше требуется ресурсов для выполнения задачи. Каждая запись, это (на примере стандартных шаблонов): получение самой записи, комментариев к ней, получение различных модульных шаблонов, получение последних записей, получение тегов для облака, и т.д. Большинство данных можно публиковать только один раз, используя отдельные индексные шаблоны, которые затем на лету включать в опубликованные файлы.

Какие части шаблонов можно вынести в отдельные файлы

  • Шапка
  • Подвал
  • Навигация
  • Различные меню
  • И т.д.

Как это сделать (на примере навигации)

Допустим, в шаблонах есть однотипные данные — навигация, которая, по идее, должна быть одинаковая на всех страницах. Но, поскольку каждая страница статическая, то при добавлении новых записей, на старых страницах информация в навигации может не обновиться. Поэтому необходимо:

  • Создать индексный шаблон, назвав его, к примеру, «Навигация», с именем файла «navigation.php».
  • Скопировать код навигации в этот шаблон.
  • В шаблонах, где раньше находилась навигация, необходимо вместо неё добавить следующий код:
<?php include("/home/username/example.com/navigation.php"); ?>

Обратите внимание, что путь до файла должен быть абсолютным, то есть начинаться ''от корня сервера''.

  • И затем опубликовать все шаблоны.

После этого на всех страницах в навигации будет актуальная информация, а также снизится нагрузка на сервер. Шаблон навигация можно поставить в режим публикации статических файлов (по умолчанию), если необходимо, чтобы он публиковался автоматически, либо в ручной режим (шаблон опубликуется, когда вы это сделаете), либо в режим очереди публикации (необходимо использовать CRON через скрипт run-periodic-tasks).

То же самое, но с использованием модулей

  • Вместо индексного файла необходимо создать модульный шаблон, например, «Navigation». Добавить в него код навигации.
  • В его опциях указать «Обрабатывать как PHP включение».
  • Затем в шаблонах, где использовалась навигация, добавить следующее:
<mt:Include module="Navigation" />
  • После этого опубликовать все шаблоны.

Плюс этого метода, что можно указать время кеширования для шаблона «Navigation».

См. также

Clone this wiki locally