在使用帝国cms模板制作网站的时候,随机文章调用方法有多种。对大部分开发者来说,都是用order by rand()来随机调用文章,这种方法很简单,相信只要稍微了解帝国cms的读者都会使用。
另外,WC曾发表了一个高效的调用方法:
先用php随机出信息ID,然后SQL调用用id in (php随机的ID列表)
调用举例:
<?php
$randnum=10; //随机数量
$randids='';
$randdh='';
for($i=1;$i<=$randnum;$i++)
{
$randids.=$randdh.rand(1,100000); //1为最小ID,100000为最大ID
$randdh=',';
}
?>
[e:loop={栏目ID,显示条数,操作类型,只显示有标题图片,"id in ($randids)"}]
模板代码内容
[/e:loop]
第一种方法我曾经使用过,wc的方法我没有使用过,主要是我有自己的调用方法,不是说比前两种方法好,只是用着习惯了,也不知道有没有其他人在使用这种方法,现在介绍给大家:
直接在根目录新建一个php文件,文件内容:
<?php
require('../class/connect.php'); //引入数据库配置文件和公共函数文件
require('../class/db_sql.php'); //引入数据库操作文件
$link=db_connect(); //连接MYSQL
$empire=new mysqlquery(); //声明数据库操作类
$sql="SELECT * FROM {$dbtbpre}ecms_news AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM {$dbtbpre}ecms_news )-(SELECT MIN(id) FROM {$dbtbpre}ecms_news))+(SELECT MIN(id)
FROM {$dbtbpre}ecms_news )) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1";
?>
<?php
$str="";
for($i=1;$i<6;$i++){
$nr= $empire->fetch1($sql);
$titleurl=sys_ReturnBqTitleLink($nr);
$str=$str."<li><a href='".$titleurl."' title='".$nr['title']."'><h3 class='title'>".$nr['title']."</h3></a></li> ";
}
db_close(); //关闭MYSQL链接
$empire=null; //注消操作类变量
echo $str;
?>