Автоматический выбор разных значений в exposed filter на разных страницах

Главные вкладки

Аватар пользователя NetZakazov NetZakazov 3 марта 2018 в 17:50

Прошу помощи у знающих.

Проблема в следующем:
Есть вьюха с раскрытым фильтром в блоке. Сам блок фильтров отображается на множестве разных страниц. Как сделать так, чтобы при переходе на определённые страницы в фильтре уже были выбраны нужные значения.

Если совсем подробно, то, к примеру есть каталог разных вёдер. У ведра есть масса характеристик (объем, цвет, ширина, высота и т.п.) . Есть страница со всеми возможными вёдрами. На этой же странице в блоке отображается раскрытый фильтр с возможностью выбора любой из характеристик. Помимо этого есть другая страница, которая полностью посвящена красным вёдрам до 5 литров. На этой странице в блоке висит всё тот же фильтр со всеми характеристиками. Нужно, чтобы при переходе на эту страницу в фильтре уже были выбраны значения цвет -> красный, объем -> меньше 5. Т.к. если значения заранее не выбраны и в фильтре сделать выборку по ширине, то отфильтруются вёдра нужной ширины, но любого объема и цвета, а должны быть нужной ширины, красного цвета и объемом меньше 5 литров.

Как-то так.

Комментарии

Аватар пользователя NetZakazov NetZakazov 3 марта 2018 в 18:59

1) Да, могу. Но таксономия на сайте не используется.
2) Через better exposed filters и стоит, т.к. для диапазонов значений нужен слайдер.
3) Спасибо, но пока не понял как этот модуль относится к задаче. Сейчас попробую разобраться.

Аватар пользователя NetZakazov NetZakazov 3 марта 2018 в 19:41

Модуль к этой задаче не подходит.

Нужен именно автоматических выбор значений, как если бы в ссылке были все параметры для фильтра (?field_a_value=xxx&field_b_value=yyy...)

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

Аватар пользователя NetZakazov NetZakazov 3 марта 2018 в 20:40

Тему можно закрывать. Решил через hook_form_alter

Если кому нужно, то примерно так: $form['field_yourfield_value']['#default_value'] = 'YourValue';

Если есть решение изящней, то ткните носом.

Аватар пользователя NetZakazov NetZakazov 3 марта 2018 в 21:00

Проблема не решена. Через hook_form_alter значения подставляются только на странице вьюхи, у которой сделан фильтр. На любой другой странице значения фильтра не меняются.

Кто подскажет что не так?

Аватар пользователя VasyOK VasyOK 4 марта 2018 в 0:36

NetZakazov wrote:

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

Т.е. модуль ни при чем. Без него с BEF будет тоже самое.

Чистая ссылка - легко если только для первого "фасета" - через таксономию. Последующие - через BEF.

Аватар пользователя NetZakazov NetZakazov 4 марта 2018 в 19:32

Вроде худо-бедно справился. Правда, пол ночи потратил на разбирание выводов devel'a и опробование разных вариантов. В итоге эффект получился даже лучше, чем я хотел изначально.
Ниже код. Вдруг кому пригодится

<?php
function MyModule_form_views_exposed_form_alter(&$form, &$form_state$form_id) {
    if (
request_path() == 'mainview/subpage') {
        
$form_state['input']['field_test_value']['min'] = '100';
        
$form_state['input']['field_test_value']['max'] = '150';
    }
?>