Views вывод количества нод на страницу по запросу пользователя

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

Аватар пользователя Freakachoo Freakachoo 25 июня 2009 в 22:19

Добрый день, подскажите пожалуйста каким образом можно реализовать во Views поле, в котором пользователь сможет сам указать сколько нод на страницу ему выводить? Причем это должно быть совмещено с ExposedFilters.
Тоесть по сути мне нужен типичный фильтр для сайта по объявлениям о квартирах.
Пользователь выбирает как ему отфильтровать все + количество выводимых объявлений. Все кроме кол-ва объявлений уже сделал... вот осталось последнее...

Я вот что думаю... может есть некий параметр передаваемый для views-ы просто типа как src=asc или что-то в этом духе?
Поиск ответа пока ничего не дал, подскажите кто знает!

Комментарии

Аватар пользователя Dimm Dimm 26 июня 2009 в 6:40

На форуме было решение для пятого друпала через аргументы.
Использовался выпадающий список с выбором 10, 20, 30.
Ищи.

Аватар пользователя penexe penexe 26 июня 2009 в 10:19

почти что модуль) добавляет фильтр(exposed) с выбором кол-ва страниц
кто доведет модуль до ума тот молодец), а я спать

mymodule.module

<?php
function mymodule_views_api() {
  return array(
'api' => 2);
}
?>

mymodule.views.inc

<?php
function mymodule_views_data_alter(&$data) {
  
$data['views']['items_per_page'] = array(
    
'title' => t('Items per page'),
    
'help' => t(''),
    
'filter' => array(
      
'handler' => 'views_handler_filter_items_per_page',
    ),
  );

  return 

$data;
}

function 

mymodule_views_handlers() {
  return array(
    
'handlers' => array(
      
'views_handler_filter_items_per_page' => array(
        
'parent' => 'views_handler_filter',
      ),
    )
  );
}
?>

views_handler_filter_items_per_page.inc

<?php
class views_handler_filter_items_per_page extends views_handler_filter {
  var 
$no_single TRUE;
  var 
$no_operator TRUE;

  function 

operator_form(&$form, &$form_state) {
    
$form['operator'] = array();
  }
  
  function 
value_form(&$form, &$form_state) {
    
$form['value']['#tree'] = TRUE;

    

$form['value'] = array(
      
'#type' => 'select',
      
'#title' => empty($form_state['exposed']) ? t('Value') : '',
      
'#options' => array(10 => '10'20 => '20'30 => '30'),
      
'#default_value' => $this->value,
    );

  }

  function 

admin_summary() {
    if (!empty(
$this->options['exposed'])) {
      return 
t('exposed');
    }
  }
  function 
query() {
    if(
$this->value) {
      
$this->view->set_items_per_page($this->value);
    }
  }
}
?>

ЗЫ: модуль работает

Аватар пользователя penexe penexe 26 июня 2009 в 19:10

Dimm wrote:
Вот спасибо!

надо бы приспособить интерфейс для задания интервалов, возможно сегодня попробую