Основное использование
Помимо встраивания шаблонов друг в друга, Вы также можете создать общий макет для ваших шаблонов. Макет можно рассматривать как шаблон который обёртывает другой шаблон или как обратное встраивание. Для использования шаблона Вы должны использовать тег {layout=”“} вверху вашего шаблона:
{layout="template_group/template"}
Где “template_group” это имя группы а “template” это имя шаблона. Вы должны включить оба названия, имя группы и шаблона в тег макета. Например:
{layout="site/wrapper"}
Таким образом будет использован шаблон “wrapper” группы “site” как макет для вашего текущего шаблона. В макете Вы должны указать место где будет выводиться контент шаблона. Для указания места используется тег “layout:contents”:
{layout:contents}
Заметка: Тег макеты **должен** быть указан до тегов любых модулей или плагинов.
Простой пример
Самый распространенный макет представления скелета вашего сайта. Используя встраивание, в шаблон вставляются шапка и футер сайта как на примере ниже:
{embed="site/.header"}
{exp:channel:entries channel="news"}
<h2>{title}<h2>
{summary}
{/exp:channel:entries}
{embed="site/.footer"}
В шаблоне “site/.header”:
<html>
<head>
<title>News Site</title>
</head>
<body>
И в шаблоне “site/.footer”:
</body>
</html>
По мере добавления больше кода в вашу шапку и футер, будет выглядеть не красиво. С макетами мы может объединить шапку сайта и футер в один шаблон назвав его для примера “site/.html-layout”:
<html>
<head>
<title>News Site</title>
</head>
<body>
{layout:contents}
</body>
</html>
Теперь вы можете написать основной шаблон использовав тег макета вместо двух эмбедов:
{layout="site/.html-layout"}
{exp:channel:entries channel="news"}
<h2>{title}<h2>
{summary}
{/exp:channel:entries}
Напомним что макеты надо делать скрытыми шаблоны. Это не даст удалённого доступа к макетам шаблонов.
Переменные макетов
- Переменные параметров
- Динамические переменные
Переменные параметров
В теге макета вы можете использовать параметры для передачи дополнительных данных в ваш шаблон макета.
{layout="site/.html-layout" color="blue"}
В вашем макете вам будет доступен тег {layout:color}:
I drive a {layout:color} car.
Важно: Имя contents занято для данных шаблона.