我们知道drupal是非常好用的CMS,但有点不足的是它没有自带上一篇,下一篇文章的链接,为了实现这个效果,我找遍了整个社区,有的说用模块实现,有的说自己手写代码就好,没必要为这点小事做个模块,当然要是以前我肯定选择模块,在这里推荐个能实现这个功能的模块flippy,在官网的https://www.drupal.org/project/flippy可以下载,这个模块没什么特别的只是有一个依赖模块token,正常下载安装即可。哎!我已经安装了,为什么打开文章内容页还没有显示啊,别着急,我们还要在需要显示的内容类型里进行设置。打开你的内容类型,点编辑之后如图:

QQ截图20170306162717.jpg

看到这个图相信你已经懂了吧,就是开启使用,然后写上要显示的文字,设置好后保存。

还是看不到显示,别急,我们还要在区块里设置这个链接显示在哪里,这个功能够强大的咯,把这两个链接做成了区块,可以放在任何地方

qqjie_tu_20170306164309.jpg

设置好之后保存,大功告成,你可以看到你的文章下面有“上一篇”“下一篇”的链接了,但是有点不完美就是它不显示标题。

为了减轻重量,完美地显示,最终我决定自己写代码。首先在自己的主题下的template.php里写上一个自定义函数:

function pn_node($nodeid,$nodetype,$op){  //这是函数名,你可以给它取任何名字
	$pnnode = db_select('node','n')->fields('n',array('nid','type','title')); //查询数据库中的nid,type,title字段
	switch($op){//判断操作符
		case "p":
		$pnnode->condition('n.nid',$nodeid,'<'); //p上一篇文章就查文章id小于当前ID的文章
		break;
		case "n":
		$pnnode->condition('n.nid',$nodeid,'>');//n下一篇文章就查文章id小于当前ID的文章
		break;
		default:
		return Null;
	}
	$pnnode=$pnnode->condition('n.type',$nodetype)//执行查询,并且以倒序排列
			->orderBy('n.nid','DESC')
			->execute()
			->fetchAssoc();
	return $pnnode;//返回查到的结果
}

然后在我们的文章模板里添加以下内容,我的文章模板是:node--article.tpl.php,如果你的是默认的就在node.tpl.php里添加以下代码就可以.

 <?php if(!$variables['teaser']): ?>
   上一篇:
   <?php $p_node = pn_node($node->nid,$node->type,'p'); 
		print l($p_node['title'],'node/'.$p_node['nid'],array('html'=>true));
   ?>
   下一篇:
   <?php $n_node = pn_node($node->nid,$node->type,'n');
		print l($n_node['title'],'node/'.$n_node['nid'],array('html'=>true));
   ?>
   <?php endif; ?>

第一行是判断文章是否完全显示,如果是预览就没有必要显示这两个链接了。现在刷新你的页面就可以看到如下显示了。

QQ截图20170306165151.jpg