帝国cms中指定栏目下的信息随机调用的改进方法
666 人阅读 | 时间:2020年02月08日 19:00
阿里云服务器 | 腾讯云服务器 | VPS2EZ:老牌低调VPS | ZJI:香港日本美国独服 |
LOCVPS服务周到 | HostKvm低调KVM VPS | 傲游主机:优质VPS | 80VPS:老牌VPS主机 |
搬瓦工:CN2 GIA线路 | CloudCone:性价比高 | JustMySocks科学上网 | RackNerd:超级便宜 |
JustMySocks科学上网 | 好用的宝塔面板 | 购买搬瓦工VPS | 恒创:香港CN2服务器 |
帝国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]
评论专区