pbootcms单页模型自动适应栏目
如遇下载链接蓝奏网盘打不开lanzous替换成lanzoux尝试! 广告

pbootcms官方手册明确支持 scode={sort:scode} 这类动态栏目变量,这正是让单页模板“自动认人”的机制——模板里不写死任何栏目编码,让标签自己去问”当前访问的是哪个栏目”。
一、要解决的问题:一份模板服务 N 个单页
传统写法的痛点是每加一个单页就要复制一份模板、改一处 scode。自动适应的目标就是:about.html / contact.html / service.html 都指向同一个模板文件,模板里零硬编码。
二、核心机制:四个「当前栏目」变量
PbootCMS 提供了专门用于”动态取当前栏目”的变量,写在 {pboot:sort}、{pboot:list}、{pboot:content} 的 scode 参数里:
表格
变量 含义 典型用途
{sort:scode} 当前栏目编码 取当前单页自己的内容 ← 最常用
{sort:pcode} 父栏目编码 取父级信息、同栏目组调用
{sort:tcode} 顶级栏目编码 面包屑、顶级菜单
[sort:type] 栏目类型:1=单页,2=列表 判断当前是不是单页
再配上栏目自身的属性标签,标题、配图、TDK 就全自动了:[sort:name]、[sort:subname]、[sort:ico]、[sort:pic]、[sort:keywords]、[sort:description]、[sort:link](V3.0.6+ 还多了 [sort:def1]~[sort:def3] 三个自定义描述字段)。
三、三步实现自动适应
第 1 步:后台把多个单页指到同一个模板文件
进入 基础内容 → 内容栏目,把”关于我们””联系我们””服务介绍”三个单页栏目的「内容页模板」都填成 single.html。
第 2 步:模板里只用变量,不写死 scode
html
{pboot:include(‘header.html’)}
<!– 用当前栏目变量动态取内容 –>
{pboot:content scode={sort:scode} cache=3600}
<div class=”page-banner”>
<img src=”[content:ext_banner]” alt=”[content:title]”>
[content:title]</h1>
[content:subname]</p>
</div>
<main class=”container”>
<div class=”page-content”>[content:content]</div>
<div class=”contact-info”>
电话:[content:ext_tel]</p>
地址:[content:ext_address]</p>
</div>
</main>
{/pboot:content}
{pboot:include(‘footer.html’)}
换任何单页栏目访问,这段代码都自动输出该栏目自己的内容——一份模板管全部。
第 3 步:栏目名、配图、导航也一并自动(不要另写)
html
<!– 标题栏:跟着当前栏目走 –>
<div class=”crumb”>
<a href=”{pboot:sitelink}”>首页</a>
{pboot:nav parent={sort:tcode}}
<a href=”[nav:link]”>[nav:name]</a>
{/pboot:nav}
</div>
四、头部 TDK 也自动适应(SEO 必做)
在 “ 里用栏目字段而非写死文本,每个单页自动带自己的 TDK:
html
[sort:name]{pboot:if(‘[sort:title]’)} – [sort:title]{/pboot:if} – {pboot:sitetitle}</title>
<meta name=”keywords” content=”[sort:keywords]”>
<meta name=”description” content=”[sort:description]”>
五、进阶:一个模板通吃「单页 + 列表」
如果想让同一套骨架同时兼容单页栏目和列表栏目,用 [sort:type] 分流:
html
{pboot:if([sort:type]==1)}
<!– 单页分支:直接输出内容 –>
{pboot:content scode={sort:scode}}[content:content]{/pboot:content}
{pboot:else}
<!– 列表分支:输出列表 –>
{pboot:list scode={sort:scode} num=10}
<a href=”[list:link]”>[list:title]</a>
{/pboot:list}
{/pboot:if}
六、自动遍历所有单页内容(做聚合页面用)
想把某父栏目下的所有单页内容一次性抓出来(比如”服务”栏目下 6 个服务单页),用 {pboot:nav} 遍历 + 类型判断 + 动态取内容:
html
{pboot:nav parent=服务栏目编码}
{pboot:if(‘[nav:type]’==1)}
{pboot:content scode=[nav:scode]}
<div class=”service-item”>
[content:title]</h3>
[content:content drophtml=1 len=120 more=’…’]</p>
</div>
{/pboot:content}
{/pboot:if}
{/pboot:nav}
七、多语言站也自动适应
多语言站点加 lng 参数即可,同一模板自动取对应语种内容:
html
{pboot:single scode=’service’ lng=’en’}
语言切换链接别手拼,用系统变量(PB 2.0 起 lg 前用 &):
html
<a href=”{pboot:lgpath}&lg=en” {pboot:if(‘{pboot:sitelanguage}’==’en’)}class=”active”{/pboot:if}>English</a>
八、避坑清单
表格
现象 原因
变量原样输出、没替换成编码 模板文件后缀不是 .html,或编码带 BOM(改 UTF-8 无 BOM)
{sort:xxx} 取到空值 用在了无栏目上下文的位置(如纯首页区块),它只在有栏目语境时有效
多值参数写成 {sort:scode} 不生效 循环体里取字段要用方括号 [sort:scode]、[nav:scode],别写成 {nav:scode}
后台变量名记错 [sort:tcode](顶级编码)不是数据库字段,别和 [sort:scode] 混;不确定时统一用 {sort:scode}
改完栏目/模板没变化 清缓存:后台「清理缓存」,必要时删 runtime/cache/*、runtime/temp/*
多图/多选扩展字段挤成一行 需用 {pboot:pics} / {pboot:checkbox} 遍历,不能直出
同页两个列表争分页 只有不带 scode 的当前栏目列表带分页且一页只能用一次
一句话总结:单页模板自动适应栏目的关键,就是 scode 参数里传变量而不是传固定值——{sort:scode} 认当前栏目、{sort:pcode} 认父栏目、[sort:type] 分辨单页还是列表;后台把多个单页栏目的「内容页模板」指向同一个文件,标题、配图、TDK、导航用 [sort:xxx] 自动跟随,一份模板就能管住整站所有单页。
NOTICE:【咨询风格酷】客服微信:wwwxmamcn
NOTICE:【风格酷模板网②群】QQ群:288678775
☉免责声明:本站所有模板均来自用户分享和网络收集,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。
☉如果源码网盘地址失效!或有其他问题,请点我报错,谢谢合作!
☉人民币与积分汇率为1比10,即1元=10积分.有任何疑问请联系客服!
☉如有其他问题,请加网站客服QQ(1131734965)进行交流。
☉本站提供的源码、模板、软件工具等其他资源,都不包含技术服务,请大家谅解!
☉源码、模板等资源会随着技术、环境的升级而存在部分问题,还请慎重选择。