[РЕШЕНО] Фильтр по дате (за последний день, неделю, 2 недели)

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

Аватар пользователя Feronn Feronn 4 июля 2011 в 15:40

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

Комментарии

Аватар пользователя Feronn Feronn 4 июля 2011 в 16:32

"Lotar" wrote:
Exposed filter во views

Вы имеете ввиду во views выбрать фильтр "По дате создания", поставить галочку "Expose this filter to visitors"? Если да, то ведь там можно задать только либо конкретные значения либо интервалы, а так, чтобы был выподающий список и 3 варианта на выбор (за последний день, за неделю, за две недели) - нельзя.

Аватар пользователя Feronn Feronn 5 июля 2011 в 9:23

О Боги! Чувствую себя тупым). Когда выбираешь фильтр по дате создания, то появляется текстовое поле. Если делаю три фильтра по дате создания, то на форме появляется три текстовых поля. Все перерыл, но так и не нашел, каким образом объединить эти три фильтра в выпадающий список. Lotar, может вы подскажете как это сделать?

Аватар пользователя Feronn Feronn 5 июля 2011 в 15:52

Решил свою проблему написанием небольшого модуля.

<?php
function filter_date_create_form_alter(&$form$form_state$form_id) {
  
  switch(
$form_id) {
    case 
'views_exposed_form':
     if (isset(
$form['created'])) {
        
$form['created']['#prefix'] = '<div class="filter-date-create">'
        
$form['created']['#suffix'] = '</div>';    
        
$form['created']['#type'] = 'select';
        
$form['created']['#size'] = 1;  

        

$form['created']['#options'] = array(
                      
'' => t('<Any>'),
                      
'-7 day' => t('Last week'),
                      
'-14 day' => t('Last two week'),
                                         ); 

        

$form['created']['#default_value'] = '';
      }
  }
}
?>

Помогла ссылка http://drupal.org/node/522140

Аватар пользователя Lotar Lotar 5 июля 2011 в 16:15

Хорошо что решили. Но на мой взгляд проще было добавить сск поле с датой и 3 интервалами. И его использовать для фильтра.