织梦怎么让不同栏目使用两套模板
栏目模板
多风格
后台配置
典型应用场景
企业站常需要把「产品中心」做成图文瀑布流,而「新闻资讯」走传统列表布局;或者 PC 站与移动站的栏目布局差异化。这就需要让两个栏目走不同的 list_*.htm 和 article_*.htm 模板。
方案一:后台直接指定模板(最简单)
每个栏目都可以独立指定模板,这是织梦原生的能力。
- 后台 → 核心 → 栏目管理 → 修改某个栏目。
- 「高级选项」标签下找到以下三项:
封面模板: article_article.htm ← 改成 article_product.htm
列表模板: list_article.htm ← 改成 list_product.htm
文章模板: article_article.htm ← 改成 article_product.htm
方案二:基于栏目 ID 判断切换
如果不想建一堆模板文件,可以在同一个 list_article.htm 内用 runphp 判断:
{dede:field name='typeid' runphp='yes'}
if(@me==5 || @me==6){
@me='<link rel="stylesheet" href="/css/product.css">';
}else{
@me='';
}
{/dede:field}
或者直接 include 不同头部:
{dede:field name='typeid' runphp='yes'}
if(@me > 10){
@me='{dede:include filename="head_product.htm"/}';
}else{
@me='{dede:include filename="head_news.htm"/}';
}
{/dede:field}
方案三:使用模板风格切换
更彻底的做法是为整站准备两套风格目录 templets/pc/ 和 templets/mobile/,通过 URL 参数或域名判断切换 $cfg_df_style。常用于多终端:
// include/common.inc.php 末尾追加
if(preg_match('/android|iphone/i',$_SERVER['HTTP_USER_AGENT'])){
$cfg_df_style='mobile';
}else{
$cfg_df_style='pc';
}
注意:方案三修改的是核心文件,升级织梦时会被覆盖,建议用
extend.func.php 或插件方式封装。
两套模板命名的最佳实践
- 遵循
list_<标识>.htm、article_<标识>.htm的命名规则,方便后台选择。 - 公共头部用
head_<标识>.htm区分,避免被错栏目误引用。 - CSS 文件独立命名:
css/news.css、css/product.css。 - 新建栏目时直接在「栏目内容」处复制一份模板配置,避免反复手填。
验证模板是否生效
在模板里写一个明显的标记,例如 <!--TPL:list_product-->,刷新页面查看源码,能搜到说明模板已切换成功。如果还是旧模板,参考《织梦模板不更新是什么原因》排查缓存。
落地建议
多模板方案上线前,建议先用本地或测试环境把两套模板跑通,确认标签、CSS、图片路径都正确再发布。栏目数量一多,最好整理一份「栏目-模板对照表」存到团队文档里,新人接手或后续新增栏目时,按表对应配置就不会乱。把模板当成可复用的资产去管理,网站的栏目扩展才会真正轻松。