11 KiB
Рубрики и поля
← К разделу «Как собирается сайт»
Рубрика описывает тип контента. Она объединяет поля, форму редактора документа, публичные шаблоны, URL, права и код жизненного цикла. Рубрика не является папкой и сама не формирует дерево сайта.
С чего начать
Перед созданием рубрики ответьте на четыре вопроса:
- Какие данные одинаковы для всех документов этого типа?
- Какие поля нужны только редактору, а какие участвуют в публичном выводе, поиске, запросах и фильтрах?
- Как должен формироваться URL?
- Как выглядит один документ и его краткое представление в списке?
Пример для статьи: lead, cover, content, author, published_source.
Общие свойства не нужно дублировать несколькими полями ради разных каталогов:
для этого используются единый alias характеристики и настройки конкретного
каталога.
Конструктор формы
Левая колонка содержит доступные, но ещё не размещённые поля. Центральная область показывает форму документа, правая — настройки выбранного поля.
- поле, добавленное в форму, исчезает из списка доступных;
- порядок меняется перетаскиванием;
- поле можно вернуть в библиотеку, не удаляя саму сущность;
- сетка состоит из 12 колонок, ширина определяет место поля в строке;
- группы визуально разделяют большие формы и не меняют публичные данные;
- переименование в конструкторе меняет подпись в этой рубрике, но не системный alias типа поля;
- просмотр настроек без изменений не должен помечать форму как изменённую.
После сохранения надпись о несохранённых изменениях должна исчезнуть. Если поле не помещается или редактор растягивает строку, проверьте ширину и настройки типа.
Настройки поля в рубрике
Настройки делятся на общие и принадлежащие типу. Одно значение не должно редактироваться в двух местах. Например, для списка значений используется один редактор вариантов, а для «Документ из рубрики» — один выбор рубрики-источника.
Часто используемые параметры:
| Параметр | Назначение |
|---|---|
| Название | Подпись поля в редакторе документа. |
| Ширина | Количество колонок формы из 12. |
| Значение по умолчанию | Начальное значение нового документа. |
| Обязательное | Запрещает сохранение без корректного значения. |
| Префикс/суффикс | Единица измерения или пояснение рядом с редактором. |
| Публичный шаблон | Разметка значения при выводе документа или запроса. |
| Путь загрузки | Каталог медиа с маркерами документа и поля. |
Подробный контракт типов: Поля документов.
Для повторяющихся списков значений не создавайте отдельную рубрику с документами. Используйте лёгкие справочники. Связь с документами рубрики нужна только тогда, когда выбранная сущность имеет собственную страницу и поля.
Шаблоны рубрики
Основной шаблон собирает [tag:maincontent] текущего документа. Дополнительные
шаблоны позволяют выбрать другой вид для отдельного документа без изменения его
полей.
<article>
<h1>[tag:fld:title]</h1>
<div class="article-content">[tag:fld:content]</div>
</article>
Отдельно настраиваются:
- основной и дополнительные шаблоны документа;
- Open Graph;
- вставка в
<head>через[tag:rubheader]; - вставка перед закрытием страницы через
[tag:rubfooter]; - шаблон краткого представления там, где он поддерживается;
- код до и после сохранения.
Не переносите общую оболочку <html>, <head> и <body> в рубрику: ею владеет
шаблон сайта.
Шаблон URL
Шаблон рубрики является префиксом адреса документа. Поддерживаются маркеры даты:
| Маркер | Значение |
|---|---|
%d, %m |
День и месяц с ведущим нулём. |
%Y, %y |
Год из четырёх или двух цифр. |
%H, %M, %S |
Час, минута и секунда. |
Пример: news/%Y/%m. В редакторе документа к результату добавляется короткий
alias. Полный путь, введённый вручную с /, система не переписывает шаблоном.
Права
Права рубрики определяют, какие группы могут читать, создавать, редактировать и удалять её документы. Они дополняют права раздела «Документы»: доступ к экрану ещё не означает право менять любую рубрику.
После создания рубрики проверьте минимум гостевую, пользовательскую, модераторскую и административную группы.
Код до и после сохранения
Сохранённый PHP пока поддерживается для проектной логики. Код получает контекст, описанный в информационном блоке редактора, и выполняется через защищённый runtime. Перед сохранением можно нормализовать или отклонить данные, после сохранения — запустить интеграцию, не дублируя основной CRUD документа.
Для переиспользуемой логики предпочтительнее hooks и сервис модуля. Так один обработчик можно подключить к нескольким рубрикам, протестировать и отключить без правки шаблонного кода. См. Хуки документов.
Безопасное изменение рабочей рубрики
- Сделайте резервную копию БД.
- Не удаляйте поле, пока его значения используются документами, запросами, каталогами или шаблонами.
- Сначала добавьте новое поле и перенесите данные.
- Проверьте несколько реальных документов и публичных листингов.
- Только после этого удаляйте старый alias и очищайте кеш.
Ревизии схемы
Ревизия схемы — это точка восстановления состава полей и их расположения. Она создаётся автоматически при изменении поля, группы, порядка или конструктора. Откройте список рубрик и нажмите кнопку с иконкой истории в нужной строке.
Перед восстановлением панель показывает три разных результата:
- вернётся — объект был в старом снимке, но сейчас отсутствует;
- изменится — объект существует, но его настройки отличаются;
- сохранится новым — объект появился позже выбранного снимка.
Последний вариант особенно важен: AVE.cms не удаляет более новые поля. Они остаются в рубрике вместе со значениями документов, но возвращаются в библиотеку конструктора как неразмещённые. Их можно снова поставить в форму вручную.
Значения документов не входят в ревизию схемы и не перезаписываются. Перед подтверждением система считает документы с данными затрагиваемых полей. Если схема или документы изменились после открытия предпросмотра, восстановление будет остановлено: откройте снимок повторно и проверьте новый расчёт.
Нельзя восстановить снимок, если он ссылается на неустановленный тип поля, содержит повторяющийся alias или конфликтует с полем другой рубрики. Исправьте причину блокировки, а не удаляйте действующее поле ради обхода проверки.
Перед каждым восстановлением текущая схема автоматически сохраняется отдельным снимком. Поэтому сразу после операции можно выбрать запись «Перед восстановлением» и безопасно вернуться назад.