Шаблоны ( Макеты, Layouts )
# Введение
Шаблоны определяют каркас страницы, т.е. все, что повторяется на странице: шапка, подвал и т.д. Шаблоны часто содержат следующие html-теги: head
, title
, body
.
Шаблоны находятся в папке с темой в подпапке /layouts и должны иметь расширение htm. Внутри шаблона должен использоваться тег {% page %}
для отображения содержимого страницы. Простой пример шаблона (макета, layout):
<html>
<body>
{% page %}
</body>
</html>
Для того, чтобы страница могла использовать шаблон, необходимо в Конфигурацях указать его название. Помните, если шаблон находится в подпапке, то ее тоже надо указать. Пример главной страницы, которая использует шаблон default.htm
:
url = "/"
layout = "default"
==
<p>Hello, world!</p>
Теперь при отображении страницы должен появиться следующий код:
<html>
<body>
<p>Hello, world!</p>
</body>
</html>
Обратите внимание на то, что Вы можете использовать фрагменты в шаблонах. Например, у Вас есть фрагмент с набором стилей и скриптов. Теперь, если Вы захотите добавить еще один скрипт или файл со стилями, Вам не надо будет редактировать каждый шаблон по отдельности. Достаточно будет изменить только фрагмент.
Раздел Конфигурации необязателен для шаблонов и используются только в административной части сайта. Поддерживаемые параметры: name и description. Пример шаблона с описанием:
description = "Basic layout example"
==
<html>
<body>
{% page %}
</body>
</html>
# Заменители ( Placeholders )
Заменители позволяют страницам вставлять содержимое в шаблон при помощи тега {% placeholder name %}
. Пример шаблона с заполнителем head:
<html>
<head>
{% placeholder head %}
</head>
...
Страницы могут вставлять содержимое в заменители при помощи тегов {% put %}
и {% endput %}
. Следующий пример показывает, как страница вставляет CSS файл в заменитель head, который использовался в предыдущем примере:
url = "/my-page"
layout = "default"
==
{% put head %}
<link href="/themes/demo/assets/css/page.css" rel="stylesheet">
{% endput %}
<p>The page content goes here.</p>
Вы можете найти больше информации о заменителях в Руководстве по Разметке.
# Динамический шаблон
В шаблонах, как и в страницах, можно использовать любые возможности Twig (см. Динамические страницы).
# Жизненный цикл шаблонов
Внутри PHP раздела Вы можете задать следующие функции: onInit()
, OnStart ()
, onBeforePageStart ()
и OnEnd ()
.
Функция onInit()
выполняется, когда все компоненты инициализированы, но перед обработкой AJAX запросов. Функция onStart()
выполняется в начале процесса загрузки страницы. onBeforePageStart()
- после работы компонентов, но перед выполнением функции onStart()
страницы.
Функция onEnd()
выполняется после того, как страница была отображена. Последовательность выполнения обработчиков:
- Шаблон -
onInit()
. - Страница -
onInit()
. - Шаблон -
onStart()
. - Компоненты шаблона м-
onRun()
. - Шаблон -
onBeforePageStart()
. - Страница -
onStart()
. - Компоненты страницы -
onRun()
. - Страница -
onEnd()
. - Шаблон -
onEnd()
.