您在這裡

Drupal網站首頁顯示随機列表Views

James Qi 在 2017年2月22日 - 09:18 發表

  在很多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);
等

 

自由标簽:

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。