PHPCMS基于MVC架构开发,循环标签是模板层封装的SQL查询与数据渲染组件,免去开发者直接编写PHP查询代码的步骤,降低模板开发门槛,官方数据显示使用封装循环标签的开发效率比原生PHP代码开发高45%以上。
当前主流使用的PHPCMS V9版本中,循环标签主要分为三类:lists标签为内容列表专用循环,loop标签为通用数据循环,sql标签为自定义查询循环,覆盖99%的模板数据调用需求。
lists标签适用于单栏目/多栏目内容模型的文章、产品、下载等内容列表调用,无需自定义复杂查询条件的场景,调用性能比通用loop标签高30%左右。
基础调用示例如下,实现调用栏目ID为5的10条最新已审核文章:
``` {pc:content action="lists" catid="5" num="10" order="inputtime DESC" status="99"}核心参数说明:catid指定调用的栏目ID,多个栏目用英文逗号分隔,填0代表调用全站所有栏目内容;num指定调用数据条数,默认值为20;status="99"固定筛选已审核通过的内容,避免调用未发布的草稿内容。
loop标签适用于自定义数据表查询、关联数据调用、特殊条件筛选的场景,灵活性更高,支持对接所有模块的数据查询需求。
基础调用示例如下,实现调用友情链接模块的所有已启用友情链接:
``` {pc:link action="lists" typeid="1" num="0" order="listorder ASC" linktype="1"} {/pc} ```核心参数说明:action指定调用的模块动作,支持content、formguide、link、vote等所有模块的查询动作;num="0"代表调用符合条件的所有数据,无数量限制。
需求为调用全站点击量前20的文章,排除栏目ID为10、11的通知类内容,实现代码如下:
``` {pc:content action="lists" catid="0" num="20" where="catid NOT IN(10,11)" order="views DESC" status="99"}where参数支持自定义SQL查询条件,可实现复杂筛选需求;str_cut函数用于截断标题长度,避免页面排版错乱,第二个参数为截断字节数,中文占2字节;$n为循环内置变量,从0开始计数,可用于生成排名序号。
需求为在内容详情页调用同栏目下的10篇最新相关文章,排除当前正在浏览的文章,实现代码如下:
``` {pc:content action="lists" catid="$catid" num="10" order="inputtime DESC" where="id!=$id" status="99"} {/pc} ```$catid、$id为详情页全局变量,无需额外赋值即可直接调用,分别代表当前内容所属栏目ID和当前内容的主键ID。
循环调用用户提交的内容(如留言、评论、投稿)时,需使用htmlspecialchars函数对输出内容进行转义,避免XSS跨站脚本攻击。不要在where参数中直接拼接用户提交的未过滤参数,防止SQL注入漏洞。后台设置模板文件权限为只读,避免恶意用户篡改循环标签调用逻辑。












易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图