hey there,

I'm trying to customize Omega's pager links (first, previous, next and last). tried the function theme_pager but it didn't change anything.

also when I switched on Theme Developer, I noticed the "prev" link was renamed to "previous"... huh.

anyway, any help is greatly appreciated.

cheers,
Luciano

Comments

marcoka’s picture

you tried theme_pager?

how did you implement it into your template.php, you know that you need to override it and can not just put theme_pager int it?

luco’s picture

yes, I tried theme_pager. didn't change anything.

I copied the function to template.php and changed the labels... what am I missing?

halth’s picture

Did you just copied the function or also made the needed changes to that?
Tried clearing the cache after editing template.php?

Sometimes it can save lives hehe

Cheers,

davidneedham’s picture

This can be pretty annoying sometimes, so for sanity sake, lets make sure we're all on the same page.

In template.php, you should have the following (be sure to change themename to the name of your theme):

<?php

function themename_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] : t('previous')), 'element' => $element, 'interval' => 1, 'parameters' => $parameters));
  $li_next = theme('pager_next', array('text' => (isset($tags[3]) ? $tags[3] : 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));

  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'), 
        'data' => $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('pager_previous', array('text' => $i, 'element' => $element, 'interval' => ($pager_current - $i), 'parameters' => $parameters)),
          );
        }
        if ($i == $pager_current) {
          $items[] = array(
            'class' => array('pager-current'), 
            'data' => $i,
          );
        }
        if ($i > $pager_current) {
          $items[] = array(
            'class' => array('pager-item'), 
            'data' => theme('pager_next', array('text' => $i, 'element' => $element, 'interval' => ($i - $pager_current), 'parameters' => $parameters)),
          );
        }
      }
      if ($i < $pager_max) {
        $items[] = array(
          'class' => array('pager-ellipsis'), 
          'data' => '…',
        );
      }
    }
    // End generation.
    if ($li_next) {
      $items[] = array(
        'class' => array('pager-next'), 
        'data' => $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')),
    ));
  }
}


?>

So if you want to change the text on the buttons, find where the text is set (right below the // End of generation loop preparation. ) and change it. What you see above should be straight out of api.drupal.org's theme_pager reference except for a minor tweak. I noticed while trying this out that my site doesn't seem to like the characters put in with the text (« ‹ › ») and would print the wrapping a tags only (no text at all). After removing the characters the text showed up.

If you keep having trouble, don't forget to clear your cache and refresh the page. If it still doesn't work, go grab the devel module and insert some dsm functions, which will print whatever variables or text you want in a message box at the top. For example, try putting this below the $li_first variable:

<?php
dsm($li_first,"dsm for first button");
?>

If you do that, flush your cache and refresh and you should see a message at the top that says:
dsm for first button => <a href="/path/to/the/foo/page" class="active">first</a>

Good luck!

luco’s picture

Status: Active » Postponed (maintainer needs more info)

thank you all, I'll make sure to give this another try and report back.

for now I'm marking as "needs more info" since the ball's in my court.

cheers

luco’s picture

Status: Postponed (maintainer needs more info) » Closed (fixed)

it worked! I never suspected those angle quotes were to blame. thanks, davidneedham. :)

I'll open another ticket on Core because of those characters, though. I think there's a bug in there somewhere.

edit: actually, the solution is to encode the file in UTF-8 (previously encoded in ANSI), but that's tough on the noobs.

marcoka’s picture

hm? the file? i thought we talk about the altering of the pager output?
or do you mean the omega file?

luco’s picture

@e-anima template.php is saved with ANSI encoding instead of UTF-8. that leads to errors when you try to customise how your pager is going to look.