Начальный уровень
Модульная сетка
Любой шаблон начинается с модульной сетки. Технически — это html-каркас, внутри которого размещаются блоки для вывода шапки, подвала, контента и сайдбара.
Такое деление не случайно. Шапка и подвал настраиваются как компоненты, то есть самостоятельными файлами. Контент определяется на основе текста записи, а вывод сайдбара происходит через специальную функцию.
Таким образом модульная сетка позволяет, не задумываясь над внутренним содержимым, разметить расположение каждого блока.
Модульные сетки в рамках MaxSite CMS называются «Шаблоны вывода». Они располагаются в каталоге шаблона main
, где main/main.php
— сетка по умолчанию. Остальные варианты должны располагаться в своих подкаталогах с обязательным файлом main.php
.
Модульня сетка — это не что иное как html-разметка. Рассмотрим простой пример.
if ($fn = mso_fe('main/blocks/_start.php')) require $fn;
if ($fn = mso_fe('main/blocks/header.php')) require $fn;
?>
<div class="layout-center-wrap">
<div class="layout-wrap">
<div class="flex">
<div class="w65">
<div>
<?php if ($fn = mso_fe('main/blocks/content.php')) require $fn; ?>
</div>
</div>
<div class="w30">
<?php mso_show_sidebar('1'); ?>
</div>
</div>
</div>
</div>
<?php
if ($fn = mso_fe('main/blocks/footer.php')) require $fn;
?>
</body></html><?php if ($fn = mso_fe('main/blocks/_end.php')) require $fn; ?>
Для того, чтобы упростить создание html-разметки, часть php-кода вынесена в каталог main/blocks
. Код:
Функция mso_fe()
работает так: если есть файл main/blocks/_start.php
, то происходит его подключение (стандартная функция require
).
Файл _start.php
содержит код для включения буферизации вывода, а _end.php
получает данные из буфера и выводит его в браузер. Это позволяет задействовать дополнительные возможности, например сжатие html-кода и смена http-протокола на универсальный.
Файлы header.php
и footer.php
содержат код для вывода компонентов шапки и подвала. А функция mso_show_sidebar()
выводит сайдбар.
main/blocks
расположены и другие файлы, позволяющие кастомизировать шаблон без правки main-файла. Это могут быть например ушки или type_foreach-файлы. Для своих шаблонов вы можете использовать модульные сетки из Default, с готовыми blocks-файлами. Что касается html-разметки, то она полностью определяется css-классами и html-тэгами. В данном случае мы видим уже знакомый пример разметки flex-сетки.
Когда стоит задача сделать модульную сетку под определенную задачу, то лучше всего взять какой-то наиболее подходящий вариант, скопировать его и поправить html-код. Таким образом у вебмастера есть возможность создавать сетки под самые разные задачи с учётом используемой вёрстки.
Некоторые модульные сетки особенные. Сетки landing
, landing0
и content-only
используются для создания лендингов: в них нет обрамляющей html-разметки, поэтому её нужно формировать прямо в тексте записи.
У модульной сетки может быть специальный файл main-function.php
, в котором можно разместить дополнительный php-код, через который можно учесть особенности её вывода.