Таксономия входимости

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

Петя и Вася, а ЗАЧЕМ?! Ведь можно ВНЕДРИТЬ фрагмент первоисточника и в книжку, и в монографию, избавив пытливого читателя от шараханья по библиографическим ссылкам, а себя от копипастинга? При этом к внедренному фрагменту автоматически прикрутятся ссылки на точки входа фрагмента в структуры первоисточника, книжки и монографии?

Это легко, если использовать авторскую такономию входимости. Редакция от 18.01.2022.

Создан 18.01.2022 16:28:19

- Таксономия входимости

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

Вот евровинт, полузакрученный в некую конструкцию из ЛДСП. Точно таких же евровинтов, полузакрученных в конструкцию, может быть до нескольких десятков. Но точно такие же евровинты (той же марки, сорта, типоразмера и т.д.) могут быть закручены и в стол, и в шкаф, и в тумбу, и в... Тоже в количестве нескольких десятков. При этом физически евровинтов МНОГО, а виртуально евровинт ОДИН.

Так вот таксономия входимости позволяет мгновенно перейти от евровинта, полузакрученного в объект, к этим же евровинтам, закрученным в стол, шкаф, тумбу, причем прямо в точки закрутки 🤣 Физически такое невозможно, а виртуально - запросто!

Автор реализовал таксономию входимости в Drupal 9 с применением модуля Entity Usage, применив его нетрадиционно.

Модуль Entity Usage в Drupal

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

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

Нетрадиционное применение модуля Entity Usage в Drupal для организации таксономии входимости

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

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

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

Сущность _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 }}">

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