#Виды модуля (визуалы)
Вид — это одна вёрстка одного модуля. У модуля их может быть несколько: одно меню показывается и лентой, и раскрывающимся списком, одно портфолио — плиткой на главной и списком в разделе.
Модуль portfolio
├── вид «Плиткой» код: moya.portfolioGrid ← на главной
├── вид «Списком» код: moya.portfolioList ← в разделе
└── вид «Три штуки» код: moya.portfolioTop ← в подвалеРаньше вёрстка была одна на модуль, прибитая к нему двумя полями. Чтобы показать меню в двух оформлениях, заводили второй модуль с тем же справочником — и данные начинали жить в двух местах. Теперь модуль отвечает за источник данных, а вид — за оформление.
#Из чего состоит вид
| Часть | Что это |
|---|---|
| До содержимого | открывающая обёртка |
| Разметка | оболочка списка, внутри {item} |
| Разметка записи | одна карточка, повторяется |
| После содержимого | закрывающая обёртка |
| CSS | стили этого вида |
| JS | скрипты этого вида |
| Название | подпись в панели |
| Код | имя для вызова: moya.portfolioGrid |
#Как выбирается вид при выводе
Правило разное для двух типов модулей.
У страницы (PFM) — рисует основной вид, помеченный в списке видов. Он один.
У блока (BFM) — вид указывается на месте вызова:
{module.menu:view=moya.menuFooter}
{module.menu:view=24}Нет указания — рисует основной. Нет ни одного вида — берётся прежняя вёрстка модуля.
Указан вид, которого нет (опечатка в коде), — движок откатывается к
основному виду, а не к пустоте. Иначе опечатка view=moya.menuFoter
рисовала бы устаревшую вёрстку, и человек правил бы вид, не понимая,
почему на странице ничего не меняется.
#Чужой вид не подойдёт
Вид принадлежит модулю. Вызов {module.menu:view=42}, где 42 — вид
карточки товара, будет отклонён: иначе меню нарисовалось бы вёрсткой
товара, с чужими полями, которых в меню нет. Тихо и криво вместо заметно
и понятно.
#Основной вид
Кнопка «Сделать основным» в списке видов модуля.

Если основной не назначен, берётся первый по порядку — модуль без вёрстки не нарисует ничего, и лучше показать хоть какой-то вид, чем пустое место.
#Отметка «правлен»
Вид, чью вёрстку вы меняли, помечается в списке. Это не украшение: по этой отметке обновление решения понимает, что вёрстку трогать нельзя. Подробно — Правка.
#Куда уходят CSS и JS
Стили и скрипты выведенных на странице видов складываются в два файла — по одному на стили и на скрипты — и подключаются ссылками.
Вставленные в разметку <style> и <script> заново приезжают с каждой
страницей и не кешируются. Отдельный файл скачивается один раз на весь
сайт.
Имя файла — отпечаток содержимого. Отсюда два следствия:
- правка вида меняет имя, и браузер берёт новое, а не старое из кеша;
- одинаковый набор видов на разных страницах даёт один и тот же файл.
Перед каждым куском в собранном файле написано, какому модулю и виду он принадлежит: иначе, открыв файл в отладчике, не понять, откуда взялось правило.
Код не сжимается и не переписывается. Это вёрстка, которую писал человек, — он должен узнавать её в отладчике браузера.
#Коды видов
Код нужен, чтобы звать вид по имени, а не по номеру. Принято писать
тема.модуль:
premiere.menu вид menu из темы premiere
moya.portfolioGrid свой вид портфолио| Правило | Пояснение |
|---|---|
| латиница, цифры, точка, дефис, подчёркивание | |
| заглавные можно | среди модулей есть menuItem |
| код уникален | занятый чужим видом не сохранится |
Без кода вид зовут по номеру: view=24. На другом сайте этот номер
окажется чужим, поэтому в темах коды обязательны.
#Что чаще всего идёт не так
«Правлю вид — на сайте не меняется». Скорее всего, страница рисуется
другим видом: у PFM это основной, у BFM — указанный в вызове. Посмотрите
view= на месте вызова.
«Стили вида не применились». Проверьте, выведен ли вид на этой странице вообще: файл собирается только из тех видов, что встретились при отрисовке.
«После правки стилей браузер показывает старое». Имя файла зависит от содержимого, поэтому такого быть не должно. Если случилось — сбросьте кеш страниц в настройках системы: страница могла отдаться из кеша целиком.