Вы здесь

Как подменить значения раскрытого фильтра Views?

0

Добрый день.

Есть View и Exposed Filter, позволяющий выбирать из словаря таксономии. (см. скриншот)

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

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

Ну и еще условия - чтобы визуально термины оставались не выбранными.

Проблема в том, что я так и не смог понять, где и как это сделать.

Пытался прицепиться с хукам hook_views_post_build, hook_views_query_alter, hook_views_pre_execute, подставляя свои значения терминов во $view->exposed_data, $view->exposed_raw_input, $view->exposed_input. Результата - никакого.

Пытался сделать по совету Xandeadx'а, как в похожем вопросе от Niklan'а. Делал так ($new_terms - это новые термины, которые нужно добавить в фильтр) -

    foreach($new_terms as $term_id)
        $form_state['values']['field_produktselektor_tid'][$term_id] = (string)$term_id;

Результата тоже никакого.

Скажите пожалуйста, никто с такой проблемой не сталкивался ?
В каком из хуков views или вообще где можно добавить/заменить/удалить значения, выбранные в Exposed Filters ?
Или тут остается только в хуке hook_views_query_alter программно альтерить query ?

Версия Drupal: 
7.x
Связанные проекты: 
Views
Вопрос задан 28.11.2017 - 18:28

Ответы

0

[del]

Ответ дан 28.11.2017 - 18:55
Аватар пользователя xandeadx
xandeadx
1471

Поясните, пожалуйста.
Считаете вопрос некорректным ?

Комментарий оставлен 28.11.2017 - 19:00

Ответы не удаляются. Заменил на [del]

Комментарий оставлен 28.11.2017 - 19:14

Понятно.
А Вы с такой проблемой не сталкивались, которую я описал ?
Уже несколько часов пытаюсь решить.
А впереди, чувствую, грядет глобальная пошаговая отладка всего процесса формирования view.

Комментарий оставлен 28.11.2017 - 19:33

Решал, решение написано в блоге, ссылку на который вы дали

Комментарий оставлен 28.11.2017 - 20:40

В общем, удалось решить это только на уровне hook_views_query_alter, откорректировав conditions в разделе $query->where. Причем, пришлось также подкорректировать сам views.
А через самбит-функцию и $form_state['values'] значения упорно не захотели передаваться. Вернее, работало это только в случае, если в сабмит-функции значения обнулить. Тогда - да, это в фильтре учитывалось.

Комментарий оставлен 29.11.2017 - 14:33