前置准备
操作前请确认满足以下条件,避免出现兼容性问题:
- 迅睿CMS版本为v4.6.x及以上,低版本不支持多层嵌套的$parent变量调用
- 已获取后台管理权限,默认后台路径为
你的域名/admin.php
- 已掌握基础的迅睿CMS单循环标签写法
嵌套核心规则(必须遵守)
所有嵌套操作必须符合以下规则,否则会出现内容不显示、变量错乱等问题:
- 每层循环必须设置不同的return别名:比如父循环return=t,子循环return=c,孙循环return=s,禁止使用默认的$vo变量,避免变量覆盖
- 子循环调用父循环字段语法:子循环内调用上一级循环的字段,使用
{$parent.字段名},多层嵌套时叠加parent,比如3层嵌套调用最上层字段用{$parent.parent.字段名}
- 嵌套层级最多支持5层,超过5层会触发系统性能限制,不建议使用
- 内层循环禁止添加page参数,仅最外层需要分页的循环可添加page=1参数
常见嵌套场景实操
以下所有代码可直接复制到模板文件中使用,仅需替换对应模块名、字段名为你站点的实际配置即可。
场景1:栏目循环嵌套下属文章列表
适用场景:首页/列表页展示所有顶级栏目,每个栏目下方显示最新3条对应文章。
完整可运行代码:
```
{module module=category pid=0 num=10 return=t}
{module module=news catid=$t.id num=3 order=updatetime desc return=c}
-
{$c.title}
{date('Y-m-d', $c.updatetime)}
{$parent.name}
{/module}
{/module}
```
注意事项:如果你的文章模块名不是news,要替换成你自己的模块标识,比如产品模块就换成product。
场景2:文章详情页嵌套相关内容

适用场景:文章详情页底部展示同栏目下的相关推荐,排除当前正在查看的文章。
完整可运行代码:
```
{$title}
{$content}
```
注意事项:id!=@$id是固定写法,用于排除当前文章,@符号不能省略,否则筛选条件不生效。
场景3:关联模型嵌套(产品嵌套规格参数)
适用场景:产品列表页每个产品下方展示对应的规格参数,产品表和规格表为关联模型,关联字段为pid(规格表存储对应产品ID)。
完整可运行代码:
```
{module module=product status=1 num=8 return=p}
售价:{$p.price}元
{module module=spec pid=$p.id return=s}
{$s.spec_name}: {$s.spec_value}
{/module}
{/module}
```
注意事项:如果你的关联字段不是pid,要替换成你后台自定义的关联字段名,比如关联字段为product_id就写product_id=$p.id。
常见问题排查方案
- 嵌套内容完全不显示:首先检查父子循环的return别名是否重复,再将子循环的条件替换为固定值测试,比如catid=12,若固定值能显示则说明父循环的变量传递错误,检查字段名拼写是否正确。
- 子循环调用父字段失效:确认是否加了$parent前缀,子循环内不能直接使用$t.字段名调用父循环字段,必须写$parent.字段名。
- 分页混乱:检查是否在内层循环加了page=1参数,仅最外层需要分页的循环可添加该参数,内层添加会导致分页逻辑错乱。
- 显示的内容不符合预期:在对应循环内添加{var_dump($别名)}打印当前循环的所有可用字段,确认字段值是否符合你的筛选条件。
快速调试技巧
- 分层测试:先测试父循环能否正常输出内容,确认无误后再添加子循环代码,避免一次性写全后找不到问题点。
- 固定值测试:子循环筛选条件先写固定值,确认子循环逻辑正确后再替换为父循环的变量,快速定位问题层级。
- 开启调试模式:后台-系统-系统设置-开发模式,开启后标签报错会显示具体的错误原因,可快速定位拼写错误、字段不存在等问题。