You are here

function custom_pagers_node_view in Custom Pagers 7

Implements hook_node_view().

File

./custom_pagers.module, line 80
Allows administrators to define context-sensitive previous/next pagers for any node type.

Code

function custom_pagers_node_view($node, $view_mode = 'full') {

  // We want to make sure we don't try to output when print.module is active.
  // It's a bit of special casing but it doesn't do much harm.
  if (node_is_page($node) && empty($node->printing)) {
    $node->custom_pagers = _custom_pagers_load_all_pagers();
    foreach ($node->custom_pagers as $pager) {
      if ($pager->position != 'block' && _custom_pagers_visibility($pager, $node)) {
        $nav_array = custom_pager_build_nav($pager, $node);
        if ($nav_array['current_index'] != -1) {
          switch ($pager->position) {
            case 'top':
              $node->content['custom_pager_top'][$pager->pid] = array(
                '#markup' => theme('custom_pager', array(
                  'nav_array' => $nav_array,
                  'node' => $node,
                  'pager' => $pager,
                  'position' => 'top',
                )),
              );
              break;
            case 'bottom':
              $node->content['custom_pager_bottom'][$pager->pid] = array(
                '#markup' => theme('custom_pager', array(
                  'nav_array' => $nav_array,
                  'node' => $node,
                  'pager' => $pager,
                  'position' => 'bottom',
                )),
              );
              break;
            case 'both':
              $node->content['custom_pager_top'][$pager->pid] = array(
                '#markup' => theme('custom_pager', array(
                  'nav_array' => $nav_array,
                  'node' => $node,
                  'pager' => $pager,
                  'position' => 'top',
                )),
              );
              $node->content['custom_pager_bottom'][$pager->pid] = array(
                '#markup' => theme('custom_pager', array(
                  'nav_array' => $nav_array,
                  'node' => $node,
                  'pager' => $pager,
                  'position' => 'bottom',
                )),
              );
              break;
          }
        }
      }
    }
    if (isset($node->content['custom_pager_top'])) {
      $node->content['custom_pager_top']['#weight'] = -100;
    }
    if (isset($node->content['custom_pager_bottom'])) {
      $node->content['custom_pager_bottom']['#weight'] = 100;
    }
  }
}