Кабинет

#Виды модуля (визуалы)

Вид — это одна вёрстка одного модуля. У модуля их может быть несколько: одно меню показывается и лентой, и раскрывающимся списком, одно портфолио — плиткой на главной и списком в разделе.

Модуль 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= на месте вызова.

«Стили вида не применились». Проверьте, выведен ли вид на этой странице вообще: файл собирается только из тех видов, что встретились при отрисовке.

«После правки стилей браузер показывает старое». Имя файла зависит от содержимого, поэтому такого быть не должно. Если случилось — сбросьте кеш страниц в настройках системы: страница могла отдаться из кеша целиком.