Редактор правил и своя схема позиций v1.0.0
Как открыть редактор правил, разобрать линейный пример и настроить схему «Своя».
Зачем это нужно
Модуль «Связи: Автоматизация» сам расставляет подписи связей между новостями внутри сборки: «раньше», «позже», «связанное» и любые ваши типы из каталога.
Чтобы это работало, вы один раз описываете правило для категории сборок: какая схема позиций и какой тип связи ставить в каждой ситуации. Правило редактируется на отдельной странице раздела «Связи», а не во всплывающем окне. После сохранения вы остаётесь на этой странице и видите обычное уведомление об успехе.
Как попасть в редактор
- Откройте админку Связи.
- Перейдите к списку правил нужной категории сборок.
- Нажмите Добавить правило — откроется пустой редактор.
- Или откройте уже существующее правило из списка.
Кнопка Добавить линейное сразу создаёт готовое линейное правило с двумя слотами («раньше» / «позже») — удобный быстрый старт без ручной сборки схемы «Своя».
Пример: линейное правило по шагам
Разберём типичный случай — сезон или хронология: новости в сборке стоят по порядку, на сайте у каждой должны быть подписи «что было раньше» и «что будет дальше».
1. Типы связей в каталоге
В модуле «Связи» заранее заведите два типа, например:
- Предыстория — для новостей, которые в списке стоят выше (раньше по сюжету);
- Продолжение — для новостей, которые стоят ниже (позже).
Имена могут быть любыми — важна их роль в правиле.
2. Создайте линейное правило
В списке правил категории нажмите Добавить линейное (или Добавить правило и выберите схему «Линейная»). Укажите понятное имя, например «Сезоны — линейная».
На странице редактора появятся два слота:
| Слот | Смысл | Что выбрать |
|---|---|---|
Раньше (index_before) | другая новость в сборке стоит выше текущей | тип Предыстория |
Позже (index_after) | другая новость стоит ниже текущей | тип Продолжение |
Включите правило (активно) и сохраните.
3. Соберите сборку
Создайте или откройте сборку этой категории. Добавьте видимые новости в нужном порядке, например:
- Пилот
- Серия 2
- Серия 3
- Финал
Сохраните сборку.
4. Запустите автозаполнение
Если в категории одно активное правило, пересчёт часто идёт при сохранении состава. Если правил несколько — нажмите кнопку автозаполнения на вкладке «Связи» у новости (или на дереве сборок), выберите это правило и режим.
5. Что получится на сайте
Откройте полную новость «Серия 2». В блоке связанных материалов (если в теме подключён вывод «Связей») ожидается примерно так:
| Новость | Подпись к ней с точки зрения «Серия 2» |
|---|---|
| Пилот | Предыстория (стоит раньше в списке) |
| Серия 3 | Продолжение |
| Финал | Продолжение |
Сама «Серия 2» в списке связанных не показывается. Направление подписи всегда «от открытой новости к другой»: для «Пилота» «Серия 2» будет Продолжение, а для «Финала» «Серия 2» — Предыстория.
6. Если порядок в сборке изменили
Переставьте новости и снова сохраните / запустите автозаполнение. Подписи пересчитаются по новым позициям. Если вы вручную меняли тип у одной пары и выбрали режим с сохранением ручных правок, эта пара не затрётся; при полном сбросе всё перепишется по правилу.
Какие бывают схемы
В правиле вы выбираете одну из готовых схем. От неё зависит, какие слоты нужно заполнить типами связей.
| Схема | Простыми словами | Что задаёте |
|---|---|---|
| Линейная | Новости в ряд: кто левее / правее в списке сборки | тип для «стоит раньше» и «стоит позже» |
| Звезда | Одна центральная новость, остальные — «лучи» | тип от центра к лучу, от луча к центру, между лучами |
| Симметричная | Любая направленная пара получает один и тот же тип | один тип на все пары |
| Своя | Вы сами решаете, какие ситуации ловить и в каком порядке | произвольный список строк из ключей позиций |
Для большинства сезонов и хронологий хватает линейной. «Звезда» удобна, когда есть одна главная новость и несколько связанных. «Своя» — когда готовые схемы не покрывают ваш случай.
Как устроено автозаполнение
В сборке новости идут по порядку (видимые элементы сверху вниз или как вы их расставили). Программа смотрит каждую упорядоченную пару «новость A → новость B» (A и B — разные новости) и решает, какую подпись связи поставить.
- Индекс — номер позиции в этом порядке:
0— первая видимая, дальше1,2, … - Для схемы «звезда» центр — всегда первая видимая новость (индекс
0). Остальные — лучи.
У схемы «Своя» вы задаёте несколько строк условий. У каждой строки:
- ключ позиции — при каком взаимном расположении A и B строка срабатывает;
- тип связи из каталога модуля «Связи».
При запуске для каждой пары берётся первая подходящая строка сверху вниз (по порядку в правиле), у которой ключ совпал и тип связи не пустой. Остальные строки для этой пары уже не смотрятся.
Ключи позиций для схемы «Своя»
Имена ключей в системе латинские — так они хранятся в базе. Ниже — что они значат.
| Ключ | Когда подходит |
|---|---|
index_before | B в списке раньше A (у B меньший индекс) |
index_after | B в списке позже A |
from_hub | A — центр (0), B — любой луч |
to_hub | B — центр, A — луч |
peer | и A, и B — не центр (связь «между лучами») |
all_pairs | любая пара разных новостей |
Правила при сохранении
- Неизвестный ключ система не примет.
- Один и тот же ключ в одном правиле — не больше одного раза (нет смысла дублировать).
- Если список условий пустой, автозаполнение не создаст новых связей между новостями. В зависимости от режима запуска оно всё же может подчистить устаревшие пары (см. ниже).
Пример «Своя»
Допустим, нужны три случая:
- всё, что позже текущей — тип «Продолжение» → строка
index_after; - всё, что раньше — тип «Предыстория» → строка
index_before; - запасной вариант на любые остальные пары —
all_pairs.
Порядок строк важен: если поставить all_pairs первым, он перехватит все пары, и остальные строки не сработают.
Кнопка автозаполнения на вкладке новости
На форме новости во вкладке Связи у уже сохранённой сборки есть кнопка запуска правил (в интерфейсе часто подписана как автозаполнение / молния).
Что происходит:
- Вы выбираете какое правило применить (если в категории несколько активных).
- Выбираете режим (см. ниже).
- Запуск касается только этой сборки — не всех сборок сайта.
Пока сборка ещё черновик и у неё нет номера в базе, кнопка недоступна: сначала сохраните новость/сборку. С этой вкладки редактор условий не открывается — правила правят только из раздела «Связи» → список правил категории.
На дереве сборок в админке «Связи» тот же запуск работает как раньше: при нескольких активных правилах на категорию система не молча выбирает одно — нужно указать правило; режимы те же.
Режимы запуска
| Режим | Что делает |
|---|---|
| С сохранением ручных правок | Пересчитывает связи по правилу, но не затирает тип у пар, которые вы вручную пометили как исключение. Убирает пары к новостям, которых больше нет в сборке. |
| Полный сброс | Заново строит связи по правилу; ручные исключения снимаются, типы переписываются по схеме. |
Если в категории несколько активных правил, при обычном сохранении состава сборки автозапуск сам не стартует «наугад»: вас попросят выбрать правило через кнопку запуска.
Кто может открыть редактор
Доступ такой же, как у админки модуля Связи: группы из настройки доступа модуля (и обычно администраторы). Отдельного списка прав только у сателлита автоматизации нет — достаточно доступа к «Связям» и включённого плагина автоматизации.
Если плагин автоматизации в менеджере плагинов выключен, кнопки запуска и экраны правил в «Связях» не показываются (или не работают), а сохранение сборки не вызывает пересчёт связей.
Краткий порядок работы
Создайте типы связей
В «Связях» заведите нужные подписи («Предыстория», «Продолжение» и т.д.), если их ещё нет.
Добавьте правило для категории
Выберите схему (линейная / звезда / симметричная / своя) и назначьте типы на слоты или строки.
Соберите сборку
Добавьте видимые новости в нужном порядке и сохраните.
Запустите автозаполнение
Если правило одно и активное — пересчёт может пойти при сохранении. Если правил несколько — нажмите кнопку запуска и выберите правило и режим.
Проверьте на сайте
Откройте полную новость из середины сборки: подписи «раньше / позже» (или ваши типы) должны совпасть с правилом; сама открытая новость в списке связанных не показывается.