在很多Drupal網站的首頁都是顯示内容的列表,這個列表可以用Views生成,可以根據不能的内容類型、字段、分類術語表等做出不同的列表,不過在有些時候列表的開頭内容比較單調或者不具有代表性,我們以前就曾經設置一個偏移值,從中間開始顯示,但這也不算一個很好的辦法,曾經想過顯示随機内容列表,可沒有實現過。
這次在修改完善一把刀辭海網站的時候,又想到這個問題,先是準備自己用PHP編寫一個随機數比對nid的程序來實現,但在網上搜索了一下,發現用Views非常容易:在排序(SORT CRITERIA)中添加Global: 随機 (Randomize)方式就可以了,注意“緩存”設置為“無”,Block caching設置為Do not cache。如下圖:
首頁上顯示出來效果如下:
還可以根據不同網站的實際需要添加不同的字段來顯示。這樣普通用戶打開首頁看起來每次都有新鮮感,搜索引擎也可以在首頁抓取到變化的不同内容。
除了用Views的辦法來實現随機列表以外,還可以用SQL語句來進行,例如(我沒有測試過):
<?php $result = db_query("SELECT nid FROM {node} WHERE type = 'story' AND status = '1' ORDER BY RAND() LIMIT 1"); if ($node = db_fetch_object($result)) { node_view(node_load(array("nid" => $node->nid, "type" => "story")), 1); } ?>
這段是Drupal 6中用的:
$query=db_query('SELECT nid, RAND() as _random FROM {node} WHERE status = 1 ORDER BY _random ASC LIMIT 1'); $result=db_fetch_object($query); 然後 drupal_goto('node/' . $result->nid); 或者 $node=node_load($result->nid); 等
评论