Поля Reference и Multi Reference

Что такое Reference и Multi Reference

Reference (Связь) и Multi Reference (Множественная связь) — это поля, которые позволяет связать элементы одной коллекции с элементами другой.

  • Reference — ссылка на один элемент
  • Multi Reference — ссылка на несколько элементов

Такая связь работает как в базах данных: изменения в связанной коллекции автоматически подтягиваются во все элементы, где используется Reference.

Пример: в коллекции «Книги» есть поле «Автор», которое связано с коллекцией «Авторы». Когда вы заполняете данные в коллекции «Книги», для этого поля подтягивается список значений из коллекции «Авторы».

Когда использовать Reference

Reference помогает избежать дублирования информации и упростить работу с данными.

Примеры использования:

  • Каталоги товаров: связывайте товары с категориями, брендами, поставщиками

  • База знаний: связывайте статьи с авторами, темами, тегами

  • Блоги и СМИ: связывайте статьи с авторами, рубриками, тегами, сериями материалов

  • Библиотеки: связывайте книги с авторами, жанрами, издательствами

Преимущества Reference

Благодаря Reference можно создавать сложные блоги, новостные и контентные порталы. Reference помогает экономить время и уменьшать количество ошибок при работе с данными.

  • Нет дублирования: Данные хранятся централизованно в одной коллекции, а не копируются многократно в других. Например, информация об авторе хранится в коллекции «Авторы», а не в каждой статье.

  • Автоматическое обновление информации: Исправили данные в одной коллекции — они автоматически обновились во всех связанных элементах. Например, если изменить имя автора в коллекции, то оно обновится во всех его статьях.

  • Мощная фильтрация: Легко вывести все товары определенного бренда или все статьи конкретного автора.

Как создать поле Reference и Multi Reference

  1. Откройте коллекцию и нажмите кнопку Добавить поле.

  1. В списке типов поля выберите Связь (Reference) или Множественная связь (Multi Reference).

3. Укажите коллекцию, с которой нужно создать связь, и нажмите кнопку Добавить поле.

Изменить привязанную коллекцию после создания поля нельзя.

4. Задайте название поля.

5. Заполните поле данными для всех элементов коллекции.

Откройте элемент и найдите нужное поле. При клике на него появляется список значений из привязанной коллекции — выберите нужное значение или несколько значений (для Multi Reference).

Также можно нажать Новый элемент, чтобы добавить в привязанную коллекцию дополнительную запись.

В поле подтянутся данные из привязанной коллекции. Нажмите кнопку Сохранить.

Привязка коллекции к самой себе

К коллекции можно привязать не только другую коллекцию, но также связать ее с ней самой.

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

В этом случае нужно выбрать тип поля Множественная связь, чтобы была возможность добавить несколько книг.

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

Например, нужно вывести имена и фамилии авторов книг на странице со списком книг.

  1. Выберите нужный элемент в виджете Collection или на динамической странице на холсте или в слоях. В нашем случае — Текст, в котором должен отображаться автор книги.

  1. В Настройках в разделе Динамические данныеСвязанное поле выберите название коллекции и далее название поля. В нашем случае — «Автор» → «Имя и фамилия».

Готово! Для всех элементов коллекции «Книги» в Текст подтянулись данные из коллекции «Автор» (поле «Имя и фамилия»).

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

Например, нужно вывести жанры книги на динамическую страницу книги.

  1. Добавьте на динамическую страницу или в Item виджета Collection книги новый виджет Collection для вывода жанров книги.

  1. Привяжите виджет Collection к полю Multi Reference «Жанр» — НастройкиCMSИсточник данных.

  1. Привяжите к тексту в виджете соответствующее поле из коллекции «Жанры» («Название») — НастройкиДинамические данныеСвязанное поле.

Готово! Теперь на динамической странице книги отображаются ее жанры.

Многоуровневые связи между коллекциями

Reference можно использовать для многоуровневых связей. Например, первая коллекция связана со второй, а вторая — с третьей. На динамической странице первой коллекции можно вывести данные из третьей коллекции.

Пример: Коллекция «Книги» связана с коллекцией «Авторы», а коллекция «Авторы» — с коллекцией «Издательства». На динамической странице книги можно вывести данные не только об авторе, но и об издательстве, с которым он работает.

Для этого в списке Динамические данныеСвязанное поле выберите «Автор» → «Издательство» → «Название».

Готово! Теперь на динамической странице книги выводится информации об издательстве, с которым работает автор.

Вложенные коллекции

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

Количество уровней вложенности коллекций не ограничено — вы можете вкладывать во вложенную коллекцию еще одну коллекцию и т.д.

Как сделать вложенные коллекции

  1. Добавьте новый виджет Collection в Collection Item коллекции книг. Добавьте в него нужные элементы, например, Текст.

  1. Привяжите внутренний виджет к полю «С этой книгой читают».

Во вложенный виджет Collection можно вывести только данные с полей Multi Reference родительской коллекции.

  1. Привяжите элементы на холсте к соответствующим полям. Например, «Название книги» и «Автор» → «Имя и фамилия».

Готово! Теперь в каждом виджете книги выводится список похожих книг.

Пагинация во вложенных коллекциях

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

Например, можно сделать пагинацию для списка книг в основном виджете Collection, связанном с коллекцией «Книги», и отдельную пагинацию для похожих книг во вложенном виджете.

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

При нажатии на кнопку пагинации обновляется только область, связанная с текущей коллекцией. Это позволяет ускорить загрузку страницы и сделать взаимодействие с контентом более плавным — без перезагрузки всего блока или страницы.

Reverse Reference (Обратная связь)

Reverse Reference — обратная связь с коллекцией, которая ссылается на текущую коллекцию. Эта опция доступна для виджета Collection в поле Источник данных в Редакторе дизайна.

Например, если в коллекции «Книги» есть ссылка на коллекцию «Авторы», то у автора есть обратная связь со всеми книгами, которые на него ссылаются. Это позволяет выводить на странице автора связанные элементы — его книги.

Как настроить Reverse Reference

  1. На динамической странице связанной коллекции (в нашем примере — «Авторы») добавьте виджет Collection.

  1. На вкладке Настройки в поле CMSИсточник данных выберите опцию, которая показывает связь с коллекцией. В нашем примере — «Книги (Автор)».

Таким образом на странице будут выводиться только книги данного автора.

  1. Привяжите элементы внутри виджета Collection (например, тексты) к соответствующим полям коллекции — вкладка НастройкиДинамические данныеСвязанное поле.

Готово! Теперь на динамической странице автора выводится список всех его книг.

Данные из Reverse Reference можно вывести не только на динамической странице, но и если добавить виджет Collection в другой виджет Collection на любой странице.

Reverse Reference недоступен в фильтрах.

Фильтрация и работа с данными

1. Фильтрация через Источник данных для Multi Reference

Пример: На динамической странице книги можно добавить виджет со списком магазинов, где ее можно купить.

  1. На динамической странице книги добавьте виджет Collection и для него выберите в НастройкахИсточник данныхMulti Reference «Где купить», который связан с коллекцией «Магазины».

В виджете будут выводиться только те магазины, где есть данная книга.

  1. Привяжите к элементам внутри виджета соответствующие поля коллекции «Магазины». Например, «Название» и «Ссылка».

Готово! Теперь на динамической странице книги выводятся только те магазины, где она доступна.

2. Вывод данных через связанное поле для Reference

Можно подтягивать данные в элемент из полей связанной коллекции.

Например, на страницу книги можно добавить текстовое поле и вывести в него название жанра из коллекции «Жанры» с помощью опции Динамические данные в Настройках.

Готово! На динамической странице книги выводится ее жанр из коллекции «Жанры».

3. Фильтрация через параметр Фильтр

Эта опция подобна Фильтрации через Источник данных для Multi Reference, но делается другим способом.

Статические фильтры

При использовании статических фильтров для сравнения можно выбрать одно или несколько статичных значений. Например, можно фильтровать книги по одному или нескольким жанрам.

  1. Выберите виджет Collection и добавьте Фильтр, нажав на «+».

  1. Настройте фильтр.

  • Выберите поле типа Multi Reference (например, «Жанр»).
  • Задайте условие (например, «Содержит любое из», «Содержит все из»).
  • Выберите значения для поля Multi Reference — можно выбрать одно или несколько (например, «Антиутопия», «Фантастика»).
  • Нажмите кнопку Добавить фильтр.

Готово! Теперь в виджете Collection отображаются только книги, у которых жанр одновременно и фантастика, и антиутопия.

Динамические фильтры

Динамические фильтры зависят от текущего элемента. Например, можно вывести похожие книги, определяя их по жанру текущей книги.

  1. На динамической странице книги добавьте виджет Collection, привязанный к коллекции «Книги».

  1. Добавьте и настройте Фильтр.

  • Выберите поле типа Multi Reference (например, «Жанр»).
  • Задайте условие (например, «Содержит любое из», «Содержит все из»).
  • Выберите значение для поля Multi Reference — значение подкатегории текущего элемента (например, «Жанр текущего элемента»). Для некоторых фильтров вы также можете выбрать сам текущий элемент.
  • Нажмите кнопку Добавить фильтр.

Готово! Теперь на странице книги отображаются похожие книги, которые совпадают с ней по жанру.

Ссылки на референсные коллекции при настройке действия у элементов

Для элементов, у которых есть действия при клике (Text Link, Link Block, Button) в Настройках действия можно выбирать следующие ссылки:

  • В настройке Переход по ссылке — можно выбрать не только ссылку из текущей коллекции, но также и ссылку из поля Reference.

Пример: К книге привязан автор из коллекции «Авторы». У автора есть ссылка на сайт — ее можно добавить в настройках действия для элемента с именем автора.

  1. Добавьте в настройках элемента Действие, нажав на «+».

  1. Выберите ДействиеПерейти по ссылке. В поле для ссылки выберите «Автор» → «Ссылка».

Готово! Теперь при клике на имя автора открывается ссылка на его сайт.

  • В настройке Переход на динамическую страницу — можно выбрать не только текущую динамическую страницу, но и динамические страницы всех коллекций референсов.

  1. Добавьте в настройках элемента Действие, нажав на «+».

  1. Выберите ДействиеПереход на динамическую страницу. В списке страниц выберите динамическую страницу «Авторы».

Готово! Теперь при клике на имя автора книги будет переход на динамическую страницу этого автора.

Важно знать

При удалении элемента, который был привязан к другому элементу, он удалится из соответствующего поля Reference/Multi Reference.

При удалении коллекции, на которую есть ссылка, автоматически удаляется поле Reference и все элементы, связанные с ним в других коллекциях. Это нужно учитывать, чтобы не потерять данные.