帝国CMS实现高效随机调用的方法
帝国CMS模板加rand()随机之类调用,数据超1万马上慢。【不怕蚂蚁一样的数据,就怕乌龟一样的模板】
如果必须要使用rand推荐使用下面比较高效的调用方法。
首先说下缺陷,文章如果删除了,会调用不到,并且只适用于一个数据表一个栏目的情况。。
<?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]
举例:
[e:loop={1,10,0,0,"id in ($randids)"}]
模板代码内容
[/e:loop]
这段中的调用数量是固定死的,不方便多次调用,这里封装成函数方法。
以下代码放进/e/class/userfun.php文件里:
function rands($num){
global $dbtbpre,$empire;
$nubers=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_news");
$randnum=$num;
$randids='';
$randdh='';
for($i=1;$i<=$randnum;$i++){
$randids.=$randdh.rand(1,$nubers);
$randdh=',';
}
$allstr.=$randids;
return $allstr;
}
附上灵动标签的调用方法:
<?php
//因为不懂编程,不知道怎么在灵动标签里调用函数,所以先赋值给一个变量,然后再调用。。。
$randids = rands(10);
?>
[e:loop={1,10,0,0,"id in ($randids)"}]
<li><a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> </li>
[/e:loop]
参考:
https://www.bbsxiaomi.com/cms/empirecms/456.html
https://www.99zyku.com/1237.html
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。