Фильтр от и до для каталога товаров (или любого другого)

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

Аватар пользователя shumod@drupal.org shumod@drupal.org 24 июня 2011 в 17:49

Пытаюсь решить проблему выборки товаров с помощью views exposed filters, чтобы можно было выбрать цену из выпадающего списка вида
от 100 до 200
от 200 до 300
от 300 до 400
...

Нашёл решение на d.org, с помощью которого получилось вывести фильтр, но фильтрацию по диапазону всё равно не получается настроить.
При выборе параметра в строке браузера добавляется: "exposed-element=400-500", а должно что-то типа "min=400&max=500". Подскажите, в чём ошибка?
Вот код:

<?php
function exposedviewsformalter_form_views_exposed_form_alter(&$form$form_state) {
  if (
$form['#id'] == 'views-exposed-form-catalog-page-1') {
    
$form['exposed-element']['#type'] = 'select';
    
$form['exposed-element']['#options'] = array(
      
'100-200' => '$100-$200',
      
'200-300' => '$200-$300',
      
'300-400' => '$300-$400',
      
'400-500' => '$400-$500',
      
'500-600' => '$500-$600',
      
'600-700' => '$600-$700',
      
'700-800' => '$700-$800',
      
'800-900' => '$800-$900',
      
'900-1000' => '$900-$1000',
    );
    
$form['#submit'][] = 'exposedviewsformalter_form_views_exposed_form_alter_submit';
  }
}

function 

exposedviewsformalter_form_views_exposed_form_alter_submit(&$form, &$form_state) {
  if (
$form_state['values']['exposed-element']) {
    list(
$values['min'], $values['max']) = explode("-"$form_state['values']['exposed-element']);
    
$form_state['view']->exposed_data['exposed-element'] = $values;
  }
}
?>

Комментарии

Аватар пользователя shumod@drupal.org shumod@drupal.org 25 июня 2011 в 11:59

В этом случае получится два выпадающих фильтра, которые будут делать "min=400" и "max=500" по одиночке. А хотелось бы один фильтр, который задавал бы сразу два параметра.
Или я неправильно понял, что ты предлагаешь сделать?