xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Как создать пэйджер для данных не из БД

Опубликовано в

В примере создаётся пэйджер на 5 страниц без использования функции pager_query():

Drupal 7:

// настройки пейджера
$per_page = 10;   // строк на страницу
$total_rows = 50; // всего строк
$element = 0;     // номер пэйджера
 
pager_default_initialize($total_rows, $per_page, $element);
$pager = theme('pager');

Drupal 6:

global $pager_page_array, $pager_total;
 
// настройки пейджера
$per_page = 10;   // строк на страницу
$total_rows = 50; // всего строк
$element = 0;     // номер пэйджера
 
// инициализация пэйджера
$pager_page_array[$element] = isset($_GET['page']) ? $_GET['page'] : 0;
$pager_total[$element] = ceil($total_rows / $per_page);
 
// генерация пэйджера
$pager = theme('pager', null, $per_page, $element);

Результат:

Самодельный пэйджер

Подробнее

Написанное актуально для Drupal 6
Похожие записи

Комментарии RSS

А как это реализовать на drupal 7? Спасибо.

Поддерживаю. Как реализовать в семерке и где массив с элементами?

Разобрался.
Это в темплейт:

function pager_array_splice($data, $limit = 9, $element = 0) {
  global $pager_page_array, $pager_total, $pager_total_items;
  $page = isset($_GET['page']) ? $_GET['page'] : '';
 
  // Convert comma-separated $page to an array, used by other functions.
  $pager_page_array = explode(',', $page);
 
  // We calculate the total of pages as ceil(items / limit).
  $pager_total_items[$element] = count($data);
  $pager_total[$element] = ceil($pager_total_items[$element] / $limit);
  $pager_page_array[$element] = max(0, min((int)$pager_page_array[$element], ((int)$pager_total[$element]) - 1));
  return array_slice($data, $pager_page_array[$element] * $limit, $limit, TRUE);
}

Пользоваться так:
  $output = '';
  $output = pager_array_splice($my_array, 30); //$my_array - мой массив с элементами
  $output = theme('item_list', array('items' => $output));
  $output .= theme('pager', array('quantity' => 5));
  print $output;

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании