zblog博客已经全面禁止利有rand()函数进行数据库数据的提取,具体可以查看zblog论坛的《关于全面禁止直接在数据库内使用rand()进行随机读取的公告》这个帖子。不让使用rand()原因就是,rand()不支持mysql以外的数据库,在数据库数据比较多的情况下速度会变得很慢。

在给主题做随机模块的时候就采用了一个迂回的方法,来达到一个随机文章的效果。具体方法记录一下,以备后用。

关于zblog主题使用随机的一个小方法

方法原理:

1、先从数据库中提出一部份数据,加入数组中

2、随机抽取数组中的数据,并显示

代码:

function mochu_rand($num){
global $zbp,$str,$order;$i;
    $i = $num;
    $str = '';
    $arr = array();
    $arand = array();
    $order = array('log_ViewNums'=>'ASC');
    $where = array(array('=','log_Status','0'));
    $array = $zbp->GetArticleList(array('*'),$where,$order,array(20),'');
$arr = array_rand($array,$i);
for($j=0;$j<$i;$j++)
{
$arand[]=$array[$arr[$j]];
}
    foreach ($arand as $related) {
        $str .= "<li><a href=\"{$related->Url}\" title=\"{$related->Title}\" target=\"_blank\">{$related->Title}</a></li>";
    }
    return $str;
}

代码中,使用的PHP中的array_rand()函数,用随机获取数组的键名,并不是数据。

代码不是很完美,如果你想使用,还请自己修改一下。