如何混合使用pbootcms单页模型和pbootcms列表模型?
如遇下载链接蓝奏网盘打不开lanzous替换成lanzoux尝试! 广告

混用完全可行,且是 PbootCMS建站的标准做法——{pboot:single} 和 {pboot:list} 是两套独立的数据通道,只要各自取数正确,谁嵌在谁里面都不冲突。下面按”四种典型混合模式 + 后台配置 + 性能避坑”给你一套可直接落地的方案。
一、先搞清混用的底层逻辑
两套标签的数据来源和适用范围完全不同,这是能混用的根本原因:
标签 取数对象 适用范围 是否带分页
{pboot:single scode=’x’} 单页模型(专题)的1 条内容 全站任意位置 无
{pboot:content id=x} / scode=x 指定 ID 的内容,单页/列表页内容都能取 全站任意位置 无
{pboot:list} 当前栏目内容列表 只能在列表页用,同页仅一次 带分页
{pboot:list scode=x} 指定栏目内容列表 全站任意位置 默认不带,page=1 强制开启
记住两句就能避开 90% 的错:只有 {pboot:list}(不带 scode)会分页且一页只能用一次;带 scode 的列表和 single 标签都可以随便放在哪里。
二、pbootcms四种典型混合模式(含可直接用的代码)
模式 1:列表页顶部嵌单页介绍(企业站最常见)
新闻中心、产品中心这类栏目,用一篇单页存”栏目介绍”,列表下方正常循环。
{pboot:include(‘header.html’)}
<!– 单页提供栏目介绍 –>
{pboot:single scode=’news_intro’ cache=3600}
<div class=”list-header”>
{single:title}</h2>
<div class=”desc”>{single:content}</div>
</div>
{/pboot:single}
<!– 指定栏目列表,强制分页 –>
{pboot:list scode={sort:scode} num=10 page=1}
<article class=”news-item”>
<a href=”[list:link]”>[list:title]</h3></a>
[list:description len=80]</p>
[list:date style=Y-m-d]</span>
</article>
{/pboot:list}
<div class=”pagination”>{page:bar}</div>
{pboot:include(‘footer.html’)}
scode={sort:scode} 表示”跟着当前栏目走”,这样一份模板能给多个栏目复用,不用逐个写死栏目编码。
模式 2:单页里嵌列表(单页做”落地页”)
“关于我们”页底部挂最新新闻,或”招聘”单页底部挂职位列表。
{pboot:single scode=’about’}
<div class=”about-banner”><img src=”{single:ext_banner}” alt=”{single:title}”></div>
{single:title}</h1>
<div class=”about-content”>{single:content}</div>
{/pboot:single}
<!– 单页里嵌列表:指定栏目,不分页 –>
最新动态</h3>
{pboot:list scode=news num=4 order=date}
<a href=”[list:link]”>[list:title]</a>
{/pboot:list}
注意这里必须写 scode=,且不要加 page=1——单页模板里强开分页会破坏 URL 结构。
模式 3:列表循环内动态调用单页(关联调用,最灵活)
在案例/产品模型里建一个字段 ext_relation,存关联单页的编码,循环时动态拉取:
{pboot:list num=10 order=sorting}
<div class=”item”>
[list:title]</h3>
<!– 用列表字段的值当 scode,动态调单页 –>
{pboot:single scode='[list:ext_relation]’}
<p class=”related”>关联页:<a href=”{single:link}”>{single:title}</a></p>
{/pboot:single}
</div>
{/pboot:list}
循环体内的字段用方括号 [list:ext_relation],这是最容易写错的地方(写成 {list:ext_relation} 会直接失效)。
如果关联的是”另一篇内容”而不是单页,改用指定内容标签:
{pboot:content id=[list:ext_laoshi]}
<img src=”[content:ico]”>[content:title]</span>
{/pboot:content}
模式 4:全站公共区域混用(头部/底部)
footer 里同时出现单页的固定信息 + 列表的动态内容:
<!– 单页:联系方式(固定) –>
{pboot:single scode=’contact’}
电话:{single:ext_tel} 地址:{single:ext_address}</p>
{/pboot:single}
<!– 列表:友情链接(动态),注意不带 page –>
{pboot:list scode=links num=8}
<a href=”[list:link]” target=”_blank”>[list:title]</a>
{/pboot:list}
三、后台怎么配(两部分独立建,不用特殊设置)
单页侧:基础内容 → 内容栏目 → 栏目新增,内容模型选 专题,列表页模板选”无”,填栏目编码(如 contact)。
列表侧:同样入口,内容模型选 文章/产品,列表页模板和内容页模板都要指定。
要关联调用时:在列表对应的内容模型 → 编辑 → 自定义字段里新增字段(如 relation),这样前台就有 [list:ext_relation] 可用。
保存模型后,清理缓存,再回填字段值。
两个模型的扩展字段都以 ext_ 开头,只要标识不重名,就永远不会互相覆盖。
四、性能与版本避坑(这段最关键)
别在列表循环里堆单页标签:{pboot:list} 循环 N 条、里面每条都套一个 single,等于查 N+1 次库。列表超过 20 条时明显变慢。优化方向是在模型里直接用字段存要展示的内容(如 ext_summary),而不是靠标签去关联取。
只有 {pboot:list}(无 scode)带分页,且同页只能有一个。需要多个列表都有翻页时,用 {pboot:list scode=x page=1} 也不行——同页多个带分页的列表会冲突/内容重复。
lfield 提性能(V2.0.5+):列表只需标题和缩略图时写 lfield=”title,ico”,别用 lfield=*,大数据量下差别很大。
cache=3600 用在固定内容上:单页这种常年不变的内容加缓存,能省掉大量查询。
{pboot:sql} 慎用:V3.2.4 起该标签因安全修复已不再支持,新版本别写自定义 SQL,老版本用也要确保变量可控,否则是注入口子。
{pboot:content} 与 {pboot:single} 别在同一段混着写:两者字段前缀不同([content:xxx] vs {single:xxx}),容易一个生效一个原样输出。
五、排查清单
现象 原因
列表循环里的单页没输出 scode 用了 {list:xxx} 而非 [list:xxx],或该字段后台没填值
分页不显示/显示重复内容 同页出现了两个带分页的 {pboot:list}
单页内容为空 栏目编码拼写不符,或没清缓存
标签被当文本输出 文件后缀不是 .html,或编码不是 UTF-8 无 BOM
只有一个列表能翻页 page=1 加在了多个列表上,只保留一个
一句话总结:
pbootcms单页模型和pbootcms列表页模型本来就是两套独立取数通道,混用只需记住”scode= 指定栏目、循环体内用方括号、一页只留一个带分页的列表、循环里少套 single”这四条,就能既做出”栏目介绍+内容列表”的丰富页面,又不拖慢速度。
NOTICE:【咨询风格酷】客服微信:wwwxmamcn
NOTICE:【风格酷模板网②群】QQ群:288678775
☉免责声明:本站所有模板均来自用户分享和网络收集,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。
☉如果源码网盘地址失效!或有其他问题,请点我报错,谢谢合作!
☉人民币与积分汇率为1比10,即1元=10积分.有任何疑问请联系客服!
☉如有其他问题,请加网站客服QQ(1131734965)进行交流。
☉本站提供的源码、模板、软件工具等其他资源,都不包含技术服务,请大家谅解!
☉源码、模板等资源会随着技术、环境的升级而存在部分问题,还请慎重选择。