本方法适用于迅睿CMS 4.x、5.x全版本,不需要修改核心程序,不需要安装第三方插件,直接在模板中修改标签即可实现随机调用,核心原理是通过MySQL的rand()随机排序实现每次返回不同内容。
如果需要调用单个或多个指定栏目下的随机内容,直接使用下方完整代码,按说明修改对应参数即可:
```html {content module="news" catid="1,2" limit="6" orderby="rand()" cache="0"}news,自定义模块修改为对应标识即可limit="10"cache="3600"代表缓存1小时不需要限制栏目,调用整个模块下的随机内容,只需要删除catid参数即可,完整可复制代码如下:
如果需要在符合特定条件的内容中随机调用,比如调用推荐位里的随机内容,只需要在原有过滤参数基础上保留orderby="rand()"和cache="0"即可,举个调用推荐位ID为1的随机内容示例:
常见过滤参数说明:flag="1"代表调用推荐位1的内容,top="1"代表调用置顶内容,thumb="1"代表调用带缩略图的内容,所有原有迅睿CMS的过滤规则都可以正常使用,不需要额外修改。

如果需要调用随机的站点Tags标签,方法一致,核心还是添加随机排序参数,完整示例如下(调用10个随机Tags):
```html {tags limit="10" orderby="rand()" cache="0"} {$t.name} {/tags} ```90%的情况是没有添加cache="0"参数,迅睿CMS默认会缓存标签调用结果,关闭缓存才能每次生成新的随机结果;如果修改后还是不变,检查是否开启了站点全局静态缓存,进入后台「系统->缓存更新」清空全站缓存再测试即可。
检查orderby="rand()"的引号是不是中文引号,所有参数符号必须是英文半角符号,中文符号会导致语法解析错误。
先检查模块标识、catid参数是否填写错误,比如把栏目ID填成了内容ID;你可以先删除orderby="rand()",用默认排序测试能不能正常输出内容,确认参数无误后再添加随机排序参数。
少数情况下迅睿CMS5.x会对orderby参数做过滤,此时可以用兼容写法,通过PHP变量传参即可解决,完整代码如下:
```html {php $order = 'rand()';} {content module="news" limit="10" orderby="{$order}" cache="0"}如果你的站点内容数据超过10万条,使用rand()随机排序会有轻微的性能损耗,如果站点并发量很高,可以设置缓存时间为300-3600秒,平衡随机性和性能;对于绝大多数中小站点来说,直接关闭缓存也不会有明显的性能问题,可以放心使用。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图