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

Материал из Movable Type Wiki
Перейти к: навигация, поиск

Содержание

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

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


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

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


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

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


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

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

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

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

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

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


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

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

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


См. также

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты