Прошу помощи у знающих.
Проблема в следующем:
Есть вьюха с раскрытым фильтром в блоке. Сам блок фильтров отображается на множестве разных страниц. Как сделать так, чтобы при переходе на определённые страницы в фильтре уже были выбраны нужные значения.
Если совсем подробно, то, к примеру есть каталог разных вёдер. У ведра есть масса характеристик (объем, цвет, ширина, высота и т.п.) . Есть страница со всеми возможными вёдрами. На этой же странице в блоке отображается раскрытый фильтр с возможностью выбора любой из характеристик. Помимо этого есть другая страница, которая полностью посвящена красным вёдрам до 5 литров. На этой странице в блоке висит всё тот же фильтр со всеми характеристиками. Нужно, чтобы при переходе на эту страницу в фильтре уже были выбраны значения цвет -> красный, объем -> меньше 5. Т.к. если значения заранее не выбраны и в фильтре сделать выборку по ширине, то отфильтруются вёдра нужной ширины, но любого объема и цвета, а должны быть нужной ширины, красного цвета и объемом меньше 5 литров.
Как-то так.
Комментарии
1) Вывести ноды по термину вьюхой можете?
2) Просто через better exposed filters фильтры можете поставить?
3) https://www.drupal.org/project/views_selective_filters
1) Да, могу. Но таксономия на сайте не используется.
2) Через better exposed filters и стоит, т.к. для диапазонов значений нужен слайдер.
3) Спасибо, но пока не понял как этот модуль относится к задаче. Сейчас попробую разобраться.
Модуль к этой задаче не подходит.
Нужен именно автоматических выбор значений, как если бы в ссылке были все параметры для фильтра (?field_a_value=xxx&field_b_value=yyy...)
Если такую ссылку открыть, то с фильтром происходит необходимый эффект. Но нужна чистая ссылка, без передаваемых параметров.
Тему можно закрывать. Решил через hook_form_alter
Если кому нужно, то примерно так: $form['field_yourfield_value']['#default_value'] = 'YourValue';
Если есть решение изящней, то ткните носом.
Search API + Facet API
Проблема не решена. Через hook_form_alter значения подставляются только на странице вьюхи, у которой сделан фильтр. На любой другой странице значения фильтра не меняются.
Кто подскажет что не так?
Т.е. модуль ни при чем. Без него с BEF будет тоже самое.
Чистая ссылка - легко если только для первого "фасета" - через таксономию. Последующие - через BEF.
Вроде худо-бедно справился. Правда, пол ночи потратил на разбирание выводов 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';
}
?>