Модуль Entity Usage интересен всем тем, кто однажды открыл его для себя и остался удовлетворен его потребительскими свойствами. Кто не знает - это такой модуль с пёсьей мордой, изображенной на рисунке ниже. Функционал модуля позволяет выявлять всевозможные связи между различными сущностями. Если совсем уж простым языком, то модуль Entity Usage отображает список материалов, в которых (многократно и повторно) используется картинка этой самой морды.

Представление (Views), упомянутое внизу страницы drupal.org/docs/8/modules/entity-usage/installation-and-basic-usage, позволяет вытащить число раз использования, т.е. число материалов (страниц и т.д.), содержащих связанную сущность. Но если подойти нетрадиционно (что нынче в тренде), то можно заполучить от модуля гораздо больше полезной информации. В частности, информацию о входимости некой сущности НЕ ПРОСТО В СОСТАВ других сущностей, а в КОНКРЕТНЫЕ УЗЛЫ ИЕРАРХИЧЕСКИХ СТРУКТУР этих сущностей. С прямым попаданием в них. Редакция от 20.03.2021.

Создан 19.03.2021 18:21:14

- Псиная харизма

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

- ТРЕБОВАНИЯ-ИНСТРУКЦИЯ

Сущность _1.1 требование 1.1 (50638) (43808), к примеру, входит (внедрена) в структуры еще двух документов. Интересно ЩЕЛКНУТЬ ПО ССЫЛОЧКЕ И ПОПАСТЬ СРАЗУ В ТУ ПОЗИЦИЮ ЛЮБОГО ИЗ ЧЕТЫРЕХ ДОКУМЕНТОВ, ГДЕ ЭТА СУЩНОСТЬ РАСПОЛОЖЕНА, а не прокручивать документы и ничего не искать. Все четыре ссылки изображены на рисунке ниже (подчеркнуты красным).

- ВСЕ ЧЕТЫРЕ ССЫЛКИ ВХОДИМОСТИ

Чтобы получилось примерно так (в любом из связанных документов):

- ТРЕБОВАНИЯ В ИНСТРУКЦИИ

Для этого пришлось настроить представление следующим образом (ОБЩИЕ НАСТРОЙКИ ПРЕДСТАВЛЕНИЯ):

- ОБЩИЕ НАСТРОЙКИ ПРЕДСТАВЛЕНИЯ

Настроить контекстный фильтр: Content: ID:

- Настроить контекстный фильтр - Content - ID

Настроить Связь: field_entity_embed: Content:

- Настроить Связь: field_entity_embed: Content

Настроить поле: Content: Title:

- Настроить поле: Content: Title

Настроить поле: Content: Ссылка на Content:

- Настроить поле: Content: Ссылка на Content

Собственно, все. Но следует упомянуть, что для представления был включен и используется модуль EVA (шикарный, кстати, модуль). Модуль EVA, как и Entity Usage, используется с настройками по умолчанию.

Скорее всего, если напрячь мозг, можно настроить все значительно проще. Но не каждый выдержит такое 😜 При этом важно, что решение получилось нетрадиционным, универсальным, а результат - «на лице».

По итогам нетрадиционного применения модуля Entity Usage

Образовалась некая «таксономия входимости». При переходе по ссылке «традиционной» таксономии всегда открывается страница, материалы на которой сортируются либо по датам, либо по алфавиту, либо еще в каком-либо порядке. В нашем же случае срабатывает «точное попадание» в цель.

Если Entity Usage в «чистом виде» всего лишь констатирует факт, что некая сущность сколько-то раз входит в состав неких иных сущностей ВООБЩЕ, в целом, то настроенный на «таксономию входимости» Views показывает, КУДА КОНКРЕТНО внедрена сущность - конкретную точку или узел иерархической структуры каждой сущности-реципиента.

Какие варианты использования (use case, если кто не въехал)? Автор использует «таксономию входимости» для автоматизации документирования и управления проектами. Обеспечивается возможность работать дистанционно, громадной проектной командой, в режиме реального времени, а также возможность немедленного просмотра результатов деятельности всех и каждого в отдельности.

Как-то так.

ЗЫ. И еще: почему-то Atlassian Confluence считается чуть ли не общепризнанным стандартом для ведения баз знаний. Так Drupal 9 всего с парой дополнительных модулей не только перекрывает возможности Atlassian Confluence, но и невозможное делает возможным. В Atlassian Confluence такой фокус с внедрением сущности в несколько других сущностей напрямую не прокатит.

ЗЗЫ. Точно говорят, что старость - не радость... Чтобы обеспечить «прямое попадание», необходимо дописать в node--ТИП_МАТЕРИАЛА.html.twig вот такую умность, выделенную жирным:

<article{{ attributes.addClass(classes).setAttribute('role', 'article') }} id="{{ node.id }}">

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