select в views exposed filter
По-умолчанию в exposed filters используются поля textfield для cck полей типа string, куда пользователь может вбить значения фильтра. А что нам делать если требуется сделать такой вариант:
Т.е. нужно дать пользователю возможность выбрать значения полей, которые заполнены у нод.
Одно из решений - это переопределить форму exposed filters. Делаем это в своем модуле, ловим форму через функцию my_module_form_views_exposed_form_alter
my_module_form_views_exposed_form_alter(&$form, $form_state) {
//ловим форму по id
if ($form['#id'] == 'views-exposed-form-uc-products-clock-page-1'){
if ($form['mechanism'] != NULL){
$mechanism = array('All' => t('<All>'));
//делаем выборку всех доступных значений, убираем дубликаты
$result = db_query("SELECT DISTINCT field_mechanism_value FROM {content_type_product}");
while ($row = db_fetch_array($result)){
$key = $row['field_mechanism_value'];
if ($key){
$mechanism[$key] = $row['field_mechanism_value'];
}
}
$form['mechanism']['#type'] = 'select';
$form['mechanism']['#size'] = 1;
$form['mechanism']['#default_value']='All';
$form['mechanism']['#options'] = $mechanism;
if(!isset($_REQUEST['mechanism'])){
$form['mechanism']['#value']='All';
}
}
}
}
//ловим форму по id
if ($form['#id'] == 'views-exposed-form-uc-products-clock-page-1'){
if ($form['mechanism'] != NULL){
$mechanism = array('All' => t('<All>'));
//делаем выборку всех доступных значений, убираем дубликаты
$result = db_query("SELECT DISTINCT field_mechanism_value FROM {content_type_product}");
while ($row = db_fetch_array($result)){
$key = $row['field_mechanism_value'];
if ($key){
$mechanism[$key] = $row['field_mechanism_value'];
}
}
$form['mechanism']['#type'] = 'select';
$form['mechanism']['#size'] = 1;
$form['mechanism']['#default_value']='All';
$form['mechanism']['#options'] = $mechanism;
if(!isset($_REQUEST['mechanism'])){
$form['mechanism']['#value']='All';
}
}
}
}

Комментарии
Оставить сообщение