Вывести все дочерние термины таксономии при поиске по родительскому

Аватар пользователя sapfir sapfir 2 декабря 2019 в 13:32

C наступающим новым годом!

Кто ни будь знает, как вывести все дочерние термины при поиске по родительскому термину в Drupal 8?

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

Я использую модуль представления терминов в виде иерархического списка https://www.drupal.org/project/views_tree.

Затем использую раскрывающийся фильтр по полю "название термина" связав его предварительно с полем "родительский термин".

Еще использую автодополнение https://www.drupal.org/project/views_autocomplete_filters. Оно ищет по полю "название термина" связанного с полем "родительский термин".

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

Не встречали подобного решения?

Комментарии

Аватар пользователя sapfir sapfir 2 декабря 2019 в 14:02

VasyOK wrote:
Результаты вьюхой можете вывести?

Да, результаты вьюхой все выводятся. А именно вывожу на странице все термины словаря в виде дерева, со всеми потомками. Так же имеется поиск по родительским терминам и с его помощью получаю только дочерние термины первого уровня. А насчет Search Api это круто, гляну на него. И с модулечьком тоже ознакомлюсь.

Аватар пользователя sapfir sapfir 3 апреля в 8:46

В общем из всех модулей только один наиболее точно по функционалу подошел (Модуль Entity Reference Hierarchy), но он не стал работать, как надо. Так я его и не понял до конца пришлось удалить. Вот ссылка на эту тему: https://drupal.ru/node/141514

Аватар пользователя sapfir sapfir 3 апреля в 19:22

Да дружище спасибо! Я тут осознал кое какие свои ошибки и не знание некоторого функционала.

Я хотел выводить ноды. Ноды вложены в друг друга по ссылке. Я хотел выводить по родительской ноде не только ту ноду которая ссылается на родительскую, но и ноду которая ссылается на ноду которая ссылается на родительскую.

А в предложенном модуле он выводит не сами ноды, а предоставляет иерархический список для фильтра. То есть мне нужно выводить ноды не в фильтр, а в само представление.

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

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

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

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

А модуль https://www.drupal.org/project/entity_hierarchy, как раз предоставляет такой же функционал, как в таксономии, но рассчитан на ноды. Но он я не смог с ним разобраться до конца.

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

Аватар пользователя VasyOK VasyOK 3 апреля в 20:04
1

Создаешь, вьюху выводящую контент. Добавляешь во вьюху фильтр
Content: Имеет термины таксономии (с глубиной) (раскрыт)
Настройки:
Словарь - твой словарь
Способ выбора - Simple hierarchical select
Раскрыть этот фильтр для посетителей - галка.

Все. Подходит способ?

Аватар пользователя sapfir sapfir 4 апреля в 18:50

Пока не очень подходит. Тему лучше не закрывать. Потом может еще, что то напишу. Вчерашнее решение далеко от идеала. Но главная засада, что я не нашел для таксономии модуля по правам доступа. Поэтому пока приостанавливаю решение данной проблемы. Буду скилы по Drupal наращивать пока, может позже, что получится.

Аватар пользователя sapfir sapfir 4 апреля в 19:06

Ааа точно подходит!

Я просто темы попутал. Просто у меня была же еще задача ноды выводить в иерархическом виде.

А термины таксономии да. Можно их так выводить. Так, что учитывая, что в начале темы вопрос был именно про таксономии, то можно считать задача решена.

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

Но если человеку разрешения на просмотр не нужны, то может смело на таксономии иерархию сделать.

Аватар пользователя sapfir sapfir 4 апреля в 19:16

А нет! Опять ошибка. Нельзя так сделать. Я вчера это понял. Очень жаль кстати. Дело в том, что ноды можно получать по терминам. То есть можно получить все ноды, которые отмечены родительским термином и дочерними терминами.

А вот получить все дочерние термины по родительскому нельзя, точнее я не нашел, а искал я усердно.

Так же и ноды тоже нельзя получить. Нельзя получить все ноды на которые ссылаются другие ноды на которые ссылается родительская нода.

Если бы в таксономии такая вещь была я бы контент просто на таксономии сделал. Ведь там поля и все, что нужно есть. Наверное это технически сложно было сделать.