Теперь займёмся подвалом. Сделаем простой компонент, чтобы потренироваться с версткой и его подключением. Пусть у нас будет таже схема, что и с шапкой — файл 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-шаблонизатора.
Таким нехитрым способом можно выносить в админ-панель любые опции шаблона.