Question

I went onto the Drupal website and found the theme hook for theme_pager I have copied the code from the comments to do a devient art style pager as this is close to what I need although when I am implmenting it i am getting

"1 Array Array Array Array"

This is the code from http://api.drupal.org/api/drupal/includes--pager.inc/function/theme_pager/6:

 function yourthemename_pager($tags = array(), $limit = 10, $element = 0, $parameters = array(), $quantity = 5) {
  global $pager_page_array, $pager_total;
  $tags = array("", "< prev", "", "next >", "");

 // Calculate various markers within this pager piece:
 // Middle is used to "center" pages around the current page.
 $pager_middle = ceil($quantity / 2);
 // current is the page we are currently paged to
 $pager_current = $pager_page_array[$element] + 1;
 // first is the first page listed by this pager piece (re quantity)
 $pager_first = $pager_current - $pager_middle + 1;
 // last is the last page listed by this pager piece (re quantity)
 $pager_last = $pager_current + $quantity - $pager_middle;
 // max is the maximum page number
 $pager_max = $pager_total[$element];
 // End of marker calculations.

 // Prepare for generation loop.
 $i = $pager_first;

 if ($pager_last > $pager_max) {
 // Adjust "center" if at end of query.
 $i = $i + ($pager_max - $pager_last);
 $pager_last = $pager_max;
 }

 if ($i <= 0) {
 // Adjust "center" if at start of query.
 $pager_last = $pager_last + (1 - $i);
 $i = 1;
 }
 // End of generation loop preparation.

 $li_previous = theme('pager_previous', (isset($tags[1]) ? $tags[1] : t('‹ previous')), $limit, $element, 1, $parameters);
 $li_next = theme('pager_next', (isset($tags[3]) ? $tags[3] : t('next ›')), $limit, $element, 1, $parameters);

 if ($pager_total[$element] > 1) {

      if ($li_previous) {
       $items[] = array(
        'class' => 'pager-previous',
        'data' => $li_previous,
       );
      }

// When there is more than one page, create the pager list.
if ($i != $pager_max) {
  // Now generate the actual pager piece.
  for (; $i <= $pager_last && $i <= $pager_max; $i++) {
    if ($i < $pager_current) {
  if ($pager_first > 1 && $i == $pager_first) {
   $output = '...'.$i;
   $stopPreEllipsis = true;
  } else {
   $output = $i;
  }
      $items[] = array(
        'class' => 'pager-item',
        'data' => theme('pager_previous', $output, $limit, $element, ($pager_current - $i), $parameters),
      );
    }
    if ($i == $pager_current) {
      $items[] = array(
        'class' => 'pager-current',
        'data' => $i,
      );
    }
    if ($i > $pager_current) {

  if ($pager_last < $pager_max && $i == $pager_last) {
   $output = $i.'...';
  } else {
   $output = $i;
  }

      $items[] = array(
        'class' => 'pager-item',
        'data' => theme('pager_next', $output, $limit, $element, ($i - $pager_current), $parameters),
      );
    }
  }
}
// End generation.
if ($li_next) {
  $items[] = array(
    'class' => 'pager-next',
    'data' => $li_next,
  );
}

return theme('item_list', $items, NULL, 'ul', array('class' => 'pager'));
  }
}

Please help.

Idealy I would like a pager like this:

< 1 2 3 4 5 6 7 8 9 10 > (all the page numbers with next and previous) - But if I can get around this issue of Array then I should be able to modify the code.

Thanks James

Was it helpful?

Solution

Install devel module, replace all the print statements in the code with, dpms. That way you will get to know what are contents of the array and then you can print whatever is required.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top