Вы здесь

Подскажите лучший способ имитации фасетного поиска

0

Всем привет!

Есть услуга, у услуг есть группирующий термин, вложенность 2. Например(ситуация вымышлена для наглядности):

услуга - банан (Родитель-фрукт, дочерний-желтый)
услуга 2 - помидор(Родитель-овощ, дочерний-красный)
итд.

Теперь о выводе: есть 2 раздела (Фрукт, Овощ), Переходим во фрукт, видим все фрукты одним списком, слева ссылки по дочерним(желтый, красный, синий итд), выбирая дочерний фильтр переходим на страницу со списком дочерних, а слева меню все также позволяет выбирать по всем дочерним и вернуться в родителя (То есть: Все фрукты / желтый/красный/синий).

По сути это функционал фасетного поиска, но его не хочу использовать по ряду причин.

Пытался сделать с помощью views, то есть, views выводит все термины родителя, слева доп блок views выводит ссылки по дочерним, но тут косяк, так как используется контекстный фильтр, то ссылки пропадают когда переходим в дочернего. Пытался вывести на дочернем, при условии отсутствия результатов еще одну вьюху с дочерними без контекста, но он выводит все дочерние(и фрукта и овоща), настроить фильтрацию только по одному родителю не получилось.

Есть еще варик сделать с помощью таксономи меню, но мне нужно на каждом родителе выводить только его дочерних, а меню выводит весь список таксономии.

Подскажите, какой вариант наиболее адекватный в данной ситуации.

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

Версия Drupal: 
7.x
Вопрос задан 12.01.2019 - 11:50
Аватар пользователя im
im
32

Думаю нужно как то в контекстном фильтре ,через php код получить айди родителя и по нему отфильтровать. По итогу отпишу

Комментарий оставлен 12.01.2019 - 11:56

Ответы

0

Как и предполагал, с помощью контекста + php получилось реализовать.

Получилось следующее:

Views1 генерирует страницу вывода всех терминов родителя (Раздел фрукты).
В шаблоне этой вьюхи вывожу блок для ссылок(фасетов)

        <?php
        $block = module_invoke('views', 'block_view', 'filter_block');
        print render($block['content']);
    ?>

Настраиваю блок: он выводит список терминов ссылок, контекстный фильтр по родителю. Если результата нет, то выводит другой вьюс блок (это сделано для перехода на дочерний).
Настраиваем другой вьюс блок, который будет показывать ссылки внутри дочерних: ставлю контекст по терм id а в значении пишу php

$tid=arg(2);
$parent = taxonomy_get_parents($tid); 
foreach($parent as $key=>$value){
return $key;
}
Ответ дан 12.01.2019 - 12:54
Аватар пользователя im
im
32

получается, при переходе на дочерний, он просто чекает id родителя и выводит все ссылки.

Комментарий оставлен 12.01.2019 - 12:56