Расширение и наследование шаблонов
Расширение и наследование шаблонов на Fenom в MODx Revolution
Использование шаблонизатора Fenom позволяет включать одни чанки (шаблоны) в другие и даже расширять их.
Например, вы можете просто подгрузить содержимое чанка:
Обычный чанк {include 'имя чанка'}
Шаблон modTemplate {include 'template:имя шаблона'}
Чанк с набором параметров
{include 'chunk@propertySet'}
{include 'template:Name@propertySet'}
Подробнее про {include}
читайте тут.
Наследование шаблонов
Гораздо более интересная функция — {extends}
шаблонов, она требует включенной системной настройки pdotools_fenom_parser.
Пишем базовый шаблон «Fenom Base»:
<!DOCTYPE html>
<html lang="en">
<head>
{include 'head'}
</head>
<body>
{block 'navbar'}
{include 'navbar'}
{/block}
<div class="container">
<div class="row">
<div class="col-md-10">
{block 'content'}
{$_modx->resource.content}
{/block}
</div>
<div class="col-md-2">
{block 'sidebar'}
Sidebar
{/block}
</div>
</div>
{block 'footer'}
{include 'footer'}
{/block}
</div>
</body>
</html>
Он включает обычные чанки (в которых, кстати, обычные плейсхолдеры MODx от компонента Theme.Bootstrap) и определяет несколько блоков {block}
, которые можно расширить в другом шаблоне.
Теперь пишем «Fenom Extended»:
{extends 'template:Fenom Base'}
{block 'content'}
<h3>{$_modx->resource.pagetitle}</h3>
<div class="jumbotron">
{parent}
</div>
{/block}
Так вы можете написать один базовый шаблон и расширить его дочерними.
Точно также можно писать и расширять чанки, только обратите внимание, что для работы с modTemplate
нужно указывать префикс template:, а для чанков нет — они работают по умолчанию во всех {include}
и {extends}
.
Важно! При наследовании Fenom требует обязательного объявления хотя бы одного блока в шаблоне. Т.е. просто унаследовать базовый шаблон строкой {extends 'template:Fenom Base'} нельзя, будет 502 ошибка на уровне PHP. Достаточно объявить любой блок либо переопределить из базового:
{extends 'template:Fenom Base'}
{block 'empty'}{/block}
Время запросов: 0,1093 s
Количество запросов: 24
Источник: cache