迅睿 CMS 模板里的公共片段:include 与继承的取舍

· 迅睿CMS · 阅读 11
摘要

头部、底部、侧栏这些每页都有的部分,迅睿给了几种复用方式,选错会让后期改版非常痛苦。方式一:模板包含标签{template "header"} ... {template "footer"}最简单直接。缺点是包含的模板不继承父级变量,需要显

头部、底部、侧栏这些每页都有的部分,迅睿给了几种复用方式,选错会让后期改版非常痛苦。

方式一:模板包含标签

{template "header"}
...
{template "footer"}

最简单直接。缺点是包含的模板不继承父级变量,需要显式传参:{template "header", ['title' => $title]}。

方式二:布局继承

建一个 layout.html,里面留 {$content} 占位,子模板声明继承关系后只需写中间那段。适合页面结构高度统一、只有内容区不同的站点。

方式三:函数封装

在应用里写一个 dr_share_header() 之类的函数,模板直接调用。灵活度最高,但逻辑跑到 PHP 里去了,改样式还得改代码,非必要不用。

对照表

场景推荐
纯静态片段template 标签
结构统一的多页面布局继承
需要读数据库的片段函数封装
带参数的导航template 标签 + 传参

一个实际经验

不要为了“少写几行”而过度拆片段。拆成十几个小文件后,改一个样式要跳五个文件去找,维护成本反而高。判断标准是:这个片段是否在三个以上模板里出现,并且改动时永远一起改,满足才拆。