Отфильтруйте список сущностей, на которые ссылается поле "Редакции ссылок на сущности"


У меня есть тип контента "Слайдер", который использует поле изменений ссылок на сущности с именем "Слайды" для сохранения ссылок на различные абзацы, которые затем отображаются на интерфейсе в виде слайдера героя.

Все работает нормально, но теперь мы получили запрос на фильтрацию слайдов с помощью логического флага показать/скрыть в абзаце слайда. Добавление логического поля к каждому такому абзацу является простым, но как я могу фильтровать эти абзацы на его основе? Я предполагаю, что Крючок Drupal, который позволяет функции отфильтровывать объекты, на которые ссылаются, по какому-либо произвольному критерию, но я не смог его найти.

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

Любая помощь будет очень признательна.

Спасибо.

Author: Ejaz, 2020-06-22

1 answers

Я бы рекомендовал сделать это, создав новый форматировщик полей, расширив форматировщик EntityReferenceRevisionsEntityFormatter по умолчанию (или расширив любой форматировщик, который вы используете для отображения абзацев). Если вы не уверены, как создать средство форматирования полей, ознакомьтесь с документацией Создание пользовательского средства форматирования полей на d.o.

В частности, вам нужно будет переопределить метод getEntitiesToView(), что-то вроде этого:

protected function getEntitiesToView(EntityReferenceFieldItemListInterface $items, $langcode) {
  $entities = parent::getEntitiesToView($items, $langcode);
  $allowed_entities = [];

  foreach($entities as $entity) {
    // Check if your show/hide checkbox is checked.
    // Note: I can't remember if this check is sufficient by itself.
    if (!$entity->my_show_hide_field->isEmpty()) {
      $allowed_entities[] = $entity;
    }
  }

  return $allowed_entities;
}

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

 1
Author: sonfd, 2020-06-22 12:03:27