帝国CMS的安全性能和扩展性能都很强,VPS科普网本身也有多个站点在使用帝国CMS建站系统,尤其是一个黄页站点,体量比较大。为了更好的进行SEO优化,使用了随机调用的功能。
以前VPS科普网也分享过帝国CMS随机调用的文章。
但是目前VPS科普网遇到的问题是限定栏目比较麻烦,同时之前的代码都要求ID需要连续。但是建站的朋友都会知道,ID很多情况下都会有不连续的情况。所以VPS科普网又收集网络上的信息。对代码进行了整理。代码如下。
随机调用帝国cms指定栏目下的几条信息,简单的使用order by rand()效率低下。官方给出的方法没有考虑id不连续的情况,以下为改进后的方法:
<?php$classid=18; //指定栏目id,当前为 $navclassid,多个请用分号隔开,比如'1,10' 表示调用栏目1和10下的所有终极栏目$limit=7;// 七条$tbname='news';//数据表list(,$classids)=sys_ReturnMoreClass($classid,1);$ids=$empire->gettotal("select group_concat(id) as total from {$dbtbpre}ecms_{$tbname} where $classids");$idsr=explode(',',$ids);$max=count($idsr)-1;if($max<$limit-1){ $rand=implode(',',$idsr); }else{ $ids=array(); $i=0; while($i<$limit){ $key=rand(0,$max); if(array_key_exists($key,$ids))continue; $ids[$key]=$idsr[$key];$i++; } $rand=implode(',',$ids); }?> [e:loop={"select * from {$dbtbpre}ecms_{$tbname} where id in($rand) limit $limit",0,24}] <a href="<?=$bqsr['titleurl']?>"><?=$bqr[title]?></a> [/e:loop]
未经允许不得转载:Just My Socks中文教程网 » 帝国cms中指定栏目下的信息随机调用的改进方法