Hello - I have created a override to the theme pager in my default theme template.php file i.e.

mytheme_pager($variables) { ... }

Which works great, but this overrides all pagers.

I have created a view called flickr and have created some template files for it i.e. views-view-fields--flickr.tpl.php, views-view--flickr.tpl.php which again work great.

What function name do I need to use to override just the pager for this view, not every single pager?

I've tried using the theme devel module but it doesn't show anything I recognise as useful. I've also done searches but can't find a match to my problem.

Thanks,
Colin.

Comments

Ayesh’s picture

<?php
$my_view
= views_get_view( 'flickr' );
$my_view->pager['items_per_page'] = 0;
?>

View is "flickr"

// Ayesh
(Latest blog post: Drupal bad practices)

colinharrisweb’s picture

Thanks for the reply, I didn't quite make myself clear.

What I'm trying to do is to use a custom function for the pager for this view, so I can style it and customise it.

Currently I have:

function mytheme_pager($variables) {
  $tags = $variables['tags'];
  $element = $variables['element'];
  $parameters = $variables['parameters'];
  $quantity = $variables['quantity'];
  global $pager_page_array, $pager_total;

  // 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_first = theme('pager_first', array('text' => (isset($tags[0]) ? $tags[0] : t('« first')), 'element' => $element, 'parameters' => $parameters));
  $li_previous = theme('pager_previous', array('text' => (isset($tags[1]) ? $tags[1] : theme('image', array('path' => base_path() . path_to_theme().'/images/flickr-prev.png', 'alt' => t('‹ previous')))), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
  $li_next = theme('pager_next', array('text' => (isset($tags[3]) ? $tags[3] : theme('image', array('path' => base_path() . path_to_theme().'/images/flickr-next.png', 'alt' => t('next ›')))), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
  $li_last = theme('pager_last', array('text' => (isset($tags[4]) ? $tags[4] : t('last »')), 'element' => $element, 'parameters' => $parameters));
  $li_first = "";
  $li_last = "";

  if ($pager_total[$element] > 1) {
    if ($li_first) {
      $items[] = array(
        'class' => array('pager-first'),
        'data' => $li_first,
      );
    }
    if ($li_previous) {
      $items[] = array(
        'class' => array('pager-previous','f_left'),
        'data' => decode_entities($li_previous),
      );
    }

    // When there is more than one page, create the pager list.
    if ($i != $pager_max) {
      if ($i > 1) {
        $items[] = array(
          'class' => array('pager-ellipsis'),
          'data' => '…',
        );
      }
      // Now generate the actual pager piece.
      for (; $i <= $pager_last && $i <= $pager_max; $i++) {
        if ($i < $pager_current) {
          $items[] = array(
            'class' => array('pager-item'),
            'data' => theme('image', array('path' => base_path() . path_to_theme().'/images/flickr-off.png', 'alt' => $i)),
          );
        }
        if ($i == $pager_current) {
          $items[] = array(
            'class' => array('pager-current'),
            'data' => theme('image', array('path' => base_path() . path_to_theme().'/images/flickr-on.png', 'alt' => $i)),
          );
        }
        if ($i > $pager_current) {
          $items[] = array(
            'class' => array('pager-item'),
            'data' => theme('image', array('path' => base_path() . path_to_theme().'/images/flickr-off.png', 'alt' => $i)),
          );
        }
      }
      if ($i < $pager_max) {
        $items[] = array(
          'class' => array('pager-ellipsis'),
          'data' => '…',
        );
      }
    }
    // End generation.
    if ($li_next) {
      $items[] = array(
        'class' => array('pager-next','f_right'),
        'data' => decode_entities($li_next),
      );
    }
    if ($li_last) {
      $items[] = array(
        'class' => array('pager-last'),
        'data' => $li_last,
      );
    }
    return '<h2 class="element-invisible">' . t('Pages') . '</h2>' . theme('item_list', array(
      'items' => $items,
      'attributes' => array('class' => array('pager')),
    ));
  }
}

Which styles all pagers. However I'd like it just to style the pager associated with the view 'Flickr'?

Eyal Shalev’s picture

Have you had any luck with it?

I'm trying to do the same thing here.

Eyal Shalev’s picture

You can do specific theme function overrides check this comments