Начальный уровень
Каталог модулей Store
Работа с юнитами требует определённой сноровки, особенно, если дело касается вывода записей на основе last-pages.php
. Однако существует очень много задач, где нужно сделать более простой вариант — вывод главной как обычный лендинг.
Лендинг (landing page) — это такая страница, которая больше похожа на презентацию товара или услуги. Типовые блоки лендингов:
- Оффер (основное торговое предложение)
- Преимущества
- Призыв к действию
- Форма захвата
- Товар/услуга
- Портфолио
- Фотографии
- Схема сотрудничества
- Клиенты/партнеры
- Отзывы
- Вопрос-Ответ
- Контакты
- и т.д.
С технической точки зрения — лендинг удобно рассматривать как набор независимых блоков, которые собираются как кубики Лего.
Поскольку в таких блоках как правило много html-кода, то будет удобней вынести его отдельным файлом, а юнит (или несколько юнитов) подключать как модуль.
В Default-шаблоне уже есть несколько готовых модулей, которые располагаются в каталоге store
. Этот каталог только хранилище файлов. Для того, чтобы использовать какой-то модуль, его следует скопировать в каталог modules
. И только после этого можно его подключать.
Давайте рассмотрим на примере достаточно простого модуля offer1
. Просто скопируйте каталог store/offers
в modules
.
Теперь подключим этот модуль в юнитах для главной.
@module offers/offer1
Модуль offer1
представляет собой две колонки: в одной заголовок и текст (сейчас это «рыба»), в другой картинка-заглушка.
no-sidebar
или no-sidebar-full-width
). Сейчас контентная часть довольно узкая, и дизайн блока «скомкан». Но пока для нас это не имеет значения.Модуль offer1
состоит из двух файлов. Файл index.php
является главным для любого модуля и именно в нём и располагаются юниты. В нашем случае это
[unit] module = offers/offer1 require = content.php parser = autotag_simple [/unit]
Ключ module
работает вместе с require
: Первый указывает на каталог расположения (относительно каталога модулей), а второй указывает подключаемый файл внутри этого каталога. Ключ require
позволяет подключать произвольный php-файл, но при этом результат вывода пропускает через встроенный php-шаблонизатор (об этом речь пойдёт позже), а также html-парсер.
То есть мы видим, что контентная часть модуля находится в файле content.php
и при этом используется парсер Simple.
Рассмотрим его содержимое.
div(layout-center-wrap mar30-t) || div(layout-wrap) || div(flex flex-wrap-phone) div(w60 w100-phone pad20-rl) h2(t-robotoslab mar50-t t-center-phone) Lorem ipsum, dolor sit amet _ Enim velit laboris adipisicing proident sit quis est sit eiusmod enim minim enim. In irure labore laboris nostrud deserunt fugiat voluptate. Anim ut in in duis minim officia magna excepteur in velit sunt ad in. Nostrud commodo incididunt laboris qui adipisicing aliqua. bq(t-gray600 t110) Sunt ex Lorem commodo sint laborum consectetur officia cupidatat nostrud quis nulla. Aute labore pariatur nostrud labore magna in laborum ullamco velit cillum magna consequat duis laboris. /bq _ Officia commodo est et quis adipisicing. Esse est sunt aute sint elit ea dolore. Minim et anim sunt aliqua eiusmod ad. /div div(w40 w100-phone pad20-r pad20-t t-left) <img src="<?= mso_holder(400, 400); ?>" alt=""> /div /div || /div || /div
Мы видим, что код представляет собой разметку для парсера Simple, где встречаются уже знакомые css-классы. Как правило, store-модули не требуют менять саму разметку, и рассчитаны на то, чтобы пользователь изменил только тексты, указал свои ссылки, адреса изображений и может ещё какие-то мелкие правки.
Аналогичным образом устроены и многие другие модули. Вы можете потренироваться с ними самостоятельно, тем более, что в Default-шаблоне они могут меняться.
Обратите внимание, что парсер Simple очень хорошо совмещается с обычным html-кодом. Это значит, что если вам нужно вставить какой-то готовый HTML, то не нужно его переделывать на Simple. Просто вставляете и он будет прекрасно работать.
Поскольку Simple часто используется в MaxSite CMS, то вы можете ознакомиться с его документацией. Пользоваться Simple достаточно просто, но главное его назначение, как и других html-парсеров — упростить написание кода, который будет корректно преобразован в HTML.