Drupal 7 开发内部培训资料, 分头诗人
Previous/Next API

Previous/Next API

模块地址: http://drupal.org/project/prev_next
模块版本: Drupal 7.xDrupal 6.x
用户数: 555
依赖:
模块类型: 内容显示 开发者工具 性能/可扩展性 模板增强 网站导航 通用模块

api类模块,通过提供上一篇/下一篇功能

 

假使有两个内容类型 “image” 跟 “video”,把下面函数添加到template.php,或者自定义一个函数:

<?php
function pn_node($node, $mode = 'n') {
  if (!function_exists('prev_next_nid')) {
    return NULL;
  }

  switch($mode) {
    case 'p':
      $n_nid = prev_next_nid($node->nid, 'prev');
      $link_text = 'previous';
      break;
    case 'n':
      $n_nid = prev_next_nid($node->nid, 'next');
      $link_text = 'next';
      break;

    default:
      return NULL;
  }
  if ($n_nid) {
    $n_node = node_load($n_nid);

    $options = array(
      'attributes' => array('class' => 'thumbnail'),
      'html'  => TRUE,
    );
    switch($n_node->type) {
      // For image nodes only
      case 'image':
        // This is an image node, get the thumbnail
        $html = l(image_display($n_node, 'thumbnail'), "node/$n_nid", $options);
        $html .= l($link_text, "node/$n_nid", array('html' => TRUE));
        return $html;
      // For video nodes only
      case 'video':
        foreach ($n_node->files as $fid => $file) {
          $html  = '<img src="' . base_path() . $file->filepath;
          $html .= '" alt="' . $n_node->title;
          $html .= '" title="' . $n_node->title;
          $html .= '" class="image image-thumbnail" />';
          $img_html = l($html, "node/$n_nid", $options);
          $text_html = l($link_text, "node/$n_nid", array('html' => TRUE));
          return $img_html . $text_html;
        }
      default:
        // Add other node types here if you want.
    }
  }
}
?>


然后在node-image.tpl.php 跟 node-video.tpl.php 中 call 这个函数就可以

<code>
  <ul id="node-navigation">
    <li class="next"><?php print pn_node($node, 'n'); ?></li>
    <li class="prev"><?php print pn_node($node, 'p'); ?></li>
  </ul>
</code>


你也可以把pn_node() 放在phptemplate_preprocess_node()里面(phptemplate_preprocess_node()是在template.php调用)。