当前位置

Drupal网站首页显示随机列表Views

James Qi 在 2017年2月22日 - 09:18 提交
内容摘要:在很多Drupal网站的首页都是显示内容的列表,这个列表可以用Views生成,可以根据不能的内容类型、字段、分类术语表等做出不同的列表,不过在有些时候列表的开头内容比较单调或者不具有代表性,我们以前就......

  在很多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标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
验证码
本问题用于测试您是否为人类访问者,避免自动垃圾发贴。
图形验证
键入显示在图片中的字符