Подвал
Теперь займёмся подвалом. Сделаем простой компонент, чтобы потренироваться с версткой и его подключением. Пусть у нас будет таже схема, что и с шапкой — файл custom/footer1.php. Сбросим настройки шаблона в my-template.php — уберем комментарий со строчки
mso_delete_option('template_set_component_options', getinfo('template'));
Пропишем компонент подвала file2 и его файл:
my_set_opt('footer_component1', 'file2');
my_set_opt('file2_file', 'custom/footer1.php');
После обновления любой страницы (F5), комментарий можно вернуть. Такая настройка позволит вам, или вашему клиенту получить начальные настройки шаблона, без необходимости вручную их указывать в админ-панели.
Пусть наш подвал будет выводить простой копирайт слева и menu3 справа.
Такое размещение нам уже знакомо по компоненту шапки, только используется другой компонент меню.
<div class="layout-center-wrap bg-blue800 t-white t80"><div class="layout-wrap flex flex-wrap pad20-tb">
<div class="flex-grow1">
© Copyright {{ date('Y') }}. All right reserved
</div>
<nav class="flex-grow0"><ul class="menu-simple menu-sep t-white links-no-color">
{%
if ($menu = mso_get_option('menu3', 'templates', '/ | Главная ~ about | О сайте'))
echo mso_menu_build($menu, 'selected', false);
%}
</ul></nav>
</div></div>
Класс .menu-sep обьявлен в _menu-simple.scss и выводит разделительную черту между пунктами меню. Все остальные классы вам должны буть уже знакомы.
Теперь усложним задачу и введем в подвал ещё один блок, который будет настраиваться из админ-панели.
Очевидно, что здесь нам потребуется создать опцию шаблона. Логичным вариантом будет перенести подвал как компонент, но есть и другой вариант — использовать опции на уровне шаблона.
Для этого созадим новый файл custom/my_options.ini:
[Блок 1 (footer1)] options_type = "%TEMPLATE%" options_key = footer1-block1 type = textarea description = "Текст для Блок 1 (footer1)" default = "" section = "Шаблонные опции"
Опции задаются стандартно. Для options_type используется спецзамена «%TEMPLATE%», которая автоматически превратится в название/каталог шаблона. Таким образом эта опция будет работать только для текущего шаблона.
Строчка section = "Шаблонные опции" задает название секции в Настройках шаблона. В этом файле она должна быть только в самой первой опции (вверху) и больше не повторяться. Тогда все опции шаблона окажутся на одной странице.
Название/ключ опции указывается в options_key. В своём файле мы и будем её выводить. Делается это так:
<div class="w100">{{
mso_get_option('footer1-block1', getinfo('template'), '')
}}</div>
Функция mso_get_option() собственно и выводит нужную опцию, где первым аргументом идет её ключ/название, вторым тип, который равен названию текущего шаблона. Третий параметр — это то, что будет выведено, если опция еще не определена.
Если мы хотим разрешить в опции задавать какой-то php-код (в виде php-шаблонизатора), то делаем так:
<div class="w100">{%
eval(mso_tmpl_prepare(mso_get_option('footer1-block1', getinfo('template'), '')));
%}</div>
Функция eval() запускает php-код, а mso_tmpl_prepare() подготавливает его из php-шаблонизатора.
Таким нехитрым способом можно выносить в админ-панель любые опции шаблона.