[Решено] Пагинация для массива изображений

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

Аватар пользователя Photoshopper Photoshopper 24 апреля 2013 в 21:23

Есть тип материала "Фотоальбом", который содержит поле "Изображение" и ограниченным количеством значений.
То-есть обычная надо содержащая множество изображений. Вопрос в том, как вывести пагинацию, чтобы отображалось по 6 фото.

Комментарии

Аватар пользователя duozersk duozersk 24 апреля 2013 в 21:29

Как вариант - отдельный шаблон для этого типа материалов, обрабатывающий какой-нибудь GET-параметр и выводящий нужную страницу + ссылки на след/пред страницы.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 24 апреля 2013 в 22:39

Даю кусок из своего модуля. Может есть более элегантное решение, хз. Пейджер с таблицей, источник - обычный массив

<?php

  $rows 

= array();
  if (!empty(
$data['zones'][$zone_id]['geopoints'])) {

    

$chunks array_chunk($data['zones'][$zone_id]['geopoints'], $limit);
    
$chunk = empty($_GET['page']) ? $chunks[0] : $chunks[$_GET['page']];

    foreach (

$chunk as $geopoint_id) {
      
$geopoint _geopoint_load($geopoint_id);

      

$links = array();
      
$links[] = array(
        
'title' => t('Delete'),
        
'href' => 'admin/commerce/config/shipping/carriers/' $variables['carrier']['name'] . '/zones/' $zone_id '/geopoints/' $geopoint_id '/delete',
        
'query' => array('destination' => $_GET['q'], 'token' => drupal_get_token()),
      );
      
      
$rows[] = array(
        array(
'data' => check_plain($geopoint->id)),
        array(
'data' => check_plain($geopoint->city)),
        array(
'data' => check_plain($geopoint->state)),
        array(
'data' => check_plain($geopoint->country)),
        array(
'data' => theme('links', array('links' => $links,'attributes' => array('class' => array('links''inline'))))),
      );
    }
  }
  
  if (!empty(
$data['zones'][$zone_id]['geopoints'])) {
    
$total count($data['zones'][$zone_id]['geopoints']);
    
pager_default_initialize($total$limit);
  }

  

$empty t('Nothing to display');
  return 
theme('table', array(
    
'rows' => $rows,
    
'header' => $header,
    
'empty' => $empty)) . theme('pager');

?>