我們知道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; ?>

第一行是判斷文章是否完全顯示,如果是預覽就沒有必要顯示這兩個鏈接了?,F在刷新你的頁面就可以看到如下顯示了。

QQ截圖20170306165151.jpg