DevCraft Документации
Руководства

Редактор правил и своя схема позиций v1.0.0

Как открыть редактор правил, разобрать линейный пример и настроить схему «Своя».

Зачем это нужно

Модуль «Связи: Автоматизация» сам расставляет подписи связей между новостями внутри сборки: «раньше», «позже», «связанное» и любые ваши типы из каталога.

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

Как попасть в редактор

  1. Откройте админку Связи.
  2. Перейдите к списку правил нужной категории сборок.
  3. Нажмите Добавить правило — откроется пустой редактор.
  4. Или откройте уже существующее правило из списка.

Кнопка Добавить линейное сразу создаёт готовое линейное правило с двумя слотами («раньше» / «позже») — удобный быстрый старт без ручной сборки схемы «Своя».

Пример: линейное правило по шагам

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

1. Типы связей в каталоге

В модуле «Связи» заранее заведите два типа, например:

  • Предыстория — для новостей, которые в списке стоят выше (раньше по сюжету);
  • Продолжение — для новостей, которые стоят ниже (позже).

Имена могут быть любыми — важна их роль в правиле.

2. Создайте линейное правило

В списке правил категории нажмите Добавить линейное (или Добавить правило и выберите схему «Линейная»). Укажите понятное имя, например «Сезоны — линейная».

На странице редактора появятся два слота:

СлотСмыслЧто выбрать
Раньше (index_before)другая новость в сборке стоит выше текущейтип Предыстория
Позже (index_after)другая новость стоит ниже текущейтип Продолжение

Включите правило (активно) и сохраните.

3. Соберите сборку

Создайте или откройте сборку этой категории. Добавьте видимые новости в нужном порядке, например:

  1. Пилот
  2. Серия 2
  3. Серия 3
  4. Финал

Сохраните сборку.

4. Запустите автозаполнение

Если в категории одно активное правило, пересчёт часто идёт при сохранении состава. Если правил несколько — нажмите кнопку автозаполнения на вкладке «Связи» у новости (или на дереве сборок), выберите это правило и режим.

5. Что получится на сайте

Откройте полную новость «Серия 2». В блоке связанных материалов (если в теме подключён вывод «Связей») ожидается примерно так:

НовостьПодпись к ней с точки зрения «Серия 2»
ПилотПредыстория (стоит раньше в списке)
Серия 3Продолжение
ФиналПродолжение

Сама «Серия 2» в списке связанных не показывается. Направление подписи всегда «от открытой новости к другой»: для «Пилота» «Серия 2» будет Продолжение, а для «Финала» «Серия 2» — Предыстория.

6. Если порядок в сборке изменили

Переставьте новости и снова сохраните / запустите автозаполнение. Подписи пересчитаются по новым позициям. Если вы вручную меняли тип у одной пары и выбрали режим с сохранением ручных правок, эта пара не затрётся; при полном сбросе всё перепишется по правилу.

Какие бывают схемы

В правиле вы выбираете одну из готовых схем. От неё зависит, какие слоты нужно заполнить типами связей.

СхемаПростыми словамиЧто задаёте
ЛинейнаяНовости в ряд: кто левее / правее в списке сборкитип для «стоит раньше» и «стоит позже»
ЗвездаОдна центральная новость, остальные — «лучи»тип от центра к лучу, от луча к центру, между лучами
СимметричнаяЛюбая направленная пара получает один и тот же типодин тип на все пары
СвояВы сами решаете, какие ситуации ловить и в каком порядкепроизвольный список строк из ключей позиций

Для большинства сезонов и хронологий хватает линейной. «Звезда» удобна, когда есть одна главная новость и несколько связанных. «Своя» — когда готовые схемы не покрывают ваш случай.

Как устроено автозаполнение

В сборке новости идут по порядку (видимые элементы сверху вниз или как вы их расставили). Программа смотрит каждую упорядоченную пару «новость A → новость B» (A и B — разные новости) и решает, какую подпись связи поставить.

  • Индекс — номер позиции в этом порядке: 0 — первая видимая, дальше 1, 2, …
  • Для схемы «звезда» центр — всегда первая видимая новость (индекс 0). Остальные — лучи.

У схемы «Своя» вы задаёте несколько строк условий. У каждой строки:

  1. ключ позиции — при каком взаимном расположении A и B строка срабатывает;
  2. тип связи из каталога модуля «Связи».

При запуске для каждой пары берётся первая подходящая строка сверху вниз (по порядку в правиле), у которой ключ совпал и тип связи не пустой. Остальные строки для этой пары уже не смотрятся.

Ключи позиций для схемы «Своя»

Имена ключей в системе латинские — так они хранятся в базе. Ниже — что они значат.

КлючКогда подходит
index_beforeB в списке раньше A (у B меньший индекс)
index_afterB в списке позже A
from_hubA — центр (0), B — любой луч
to_hubB — центр, A — луч
peerи A, и B — не центр (связь «между лучами»)
all_pairsлюбая пара разных новостей

Правила при сохранении

  • Неизвестный ключ система не примет.
  • Один и тот же ключ в одном правиле — не больше одного раза (нет смысла дублировать).
  • Если список условий пустой, автозаполнение не создаст новых связей между новостями. В зависимости от режима запуска оно всё же может подчистить устаревшие пары (см. ниже).

Пример «Своя»

Допустим, нужны три случая:

  1. всё, что позже текущей — тип «Продолжение» → строка index_after;
  2. всё, что раньше — тип «Предыстория» → строка index_before;
  3. запасной вариант на любые остальные пары — all_pairs.

Порядок строк важен: если поставить all_pairs первым, он перехватит все пары, и остальные строки не сработают.

Кнопка автозаполнения на вкладке новости

На форме новости во вкладке Связи у уже сохранённой сборки есть кнопка запуска правил (в интерфейсе часто подписана как автозаполнение / молния).

Что происходит:

  1. Вы выбираете какое правило применить (если в категории несколько активных).
  2. Выбираете режим (см. ниже).
  3. Запуск касается только этой сборки — не всех сборок сайта.

Пока сборка ещё черновик и у неё нет номера в базе, кнопка недоступна: сначала сохраните новость/сборку. С этой вкладки редактор условий не открывается — правила правят только из раздела «Связи» → список правил категории.

На дереве сборок в админке «Связи» тот же запуск работает как раньше: при нескольких активных правилах на категорию система не молча выбирает одно — нужно указать правило; режимы те же.

Режимы запуска

РежимЧто делает
С сохранением ручных правокПересчитывает связи по правилу, но не затирает тип у пар, которые вы вручную пометили как исключение. Убирает пары к новостям, которых больше нет в сборке.
Полный сбросЗаново строит связи по правилу; ручные исключения снимаются, типы переписываются по схеме.

Если в категории несколько активных правил, при обычном сохранении состава сборки автозапуск сам не стартует «наугад»: вас попросят выбрать правило через кнопку запуска.

Кто может открыть редактор

Доступ такой же, как у админки модуля Связи: группы из настройки доступа модуля (и обычно администраторы). Отдельного списка прав только у сателлита автоматизации нет — достаточно доступа к «Связям» и включённого плагина автоматизации.

Если плагин автоматизации в менеджере плагинов выключен, кнопки запуска и экраны правил в «Связях» не показываются (или не работают), а сохранение сборки не вызывает пересчёт связей.

Краткий порядок работы

Создайте типы связей

В «Связях» заведите нужные подписи («Предыстория», «Продолжение» и т.д.), если их ещё нет.

Добавьте правило для категории

Выберите схему (линейная / звезда / симметричная / своя) и назначьте типы на слоты или строки.

Соберите сборку

Добавьте видимые новости в нужном порядке и сохраните.

Запустите автозаполнение

Если правило одно и активное — пересчёт может пойти при сохранении. Если правил несколько — нажмите кнопку запуска и выберите правило и режим.

Проверьте на сайте

Откройте полную новость из середины сборки: подписи «раньше / позже» (или ваши типы) должны совпасть с правилом; сама открытая новость в списке связанных не показывается.

Связанные разделы

На этой странице