织梦模板冲突如何排查定位

织梦站点常出现"明明换了新模板,前台却显示旧样式"或"不同栏目模板互相串味"的现象,这类问题统称模板冲突。冲突来源不止一处,可能涉及多套模板共存、栏目级覆盖、{style} 解析错误、缓存未清等。本文给出一套系统化的排查路径。

一、模板冲突的常见表现

1. 样式串味

访问 A 栏目显示 B 栏目的模板,或同一页面 PC/移动端样式错乱。

2. 模板部分更新

列表页换了新模板,但内容页还是旧的,或反过来。

3. 标签不解析

前台直接出现 {dede:field name='title'/} 原文,说明模板未被引擎识别。

4. 静态页空白或报错

生成时报 Fatal error,或生成的 HTML 完全空白。

二、织梦模板优先级机制

排查前必须理解织梦的模板解析顺序,从高到低:

1. 栏目级模板(网站栏目管理 → 修改栏目 → 模板文件名)
2. 内容模型级模板(频道管理 → 模板设置)
3. 后台"模板默认风格"(系统参数 → 站点设置)
4. /templets/default/ 兜底默认模板

关键变量 {style} 会被替换为后台设置的"模板默认风格"目录名,而栏目级模板可以单独指定其他目录。这是冲突的根源。

三、排查步骤:从外到内六步定位

步骤 1:确认当前生效的模板目录

后台 → 系统 → 系统基本参数 → 站点设置
查看"模板默认风格"字段值(如 default、newstyle)

这是 {style} 解析的基准。如果该字段为空或写错,所有用 {style} 的模板都会失效。

步骤 2:逐栏目核对栏目级模板

核心 → 网站栏目管理 → 修改某栏目 → 高级选项
模板文件名:
  频道封面:{style}/index_article.htm
  列表页:{style}/list_article.htm
  文章页:{style}/article_article.htm

重点看是否混用了多个目录(如部分栏目写 default/list_xxx.htm,部分写 newstyle/list_xxx.htm)。这种"混用"是样式串味的最常见原因。

步骤 3:检查物理文件是否真的存在

ls -l /templets/当前模板目录/
  index_article.htm 是否存在?
  list_article.htm 是否存在?
  article_article.htm 是否存在?

模板文件缺失时,织梦会回退到 default 目录,造成"以为是新模板实际是旧模板"的错觉。

步骤 4:核对内容模型的模板绑定

核心 → 频道模型 → 内容模型管理 → 修改
  列表模板:{style}/list_article.htm
  文档模板:{style}/article_article.htm

自定义模型(如产品、视频)必须单独配置模板,否则会用普通文章模板。

步骤 5:开启模板调试模式

/include/common.inc.php 顶部临时加:

error_reporting(E_ALL);
ini_set('display_errors', 1);
$cfg_debug=TRUE;

再访问动态页 /plus/view.php?aid=1,可直接看到模板加载错误信息。排查完务必关闭。

步骤 6:清缓存重新生成

系统 → 清除系统缓存
生成 → 一键更新网站

四、配置示例:统一模板目录避免冲突

建议把所有栏目模板统一指向同一目录,杜绝混用:

-- 批量修正栏目模板(SQL 示例,执行前务必备份)
UPDATE dede_arctype SET
  tempindex='{style}/index_article.htm',
  templist='{style}/list_article.htm',
  temparticle='{style}/article_article.htm'
WHERE 1;

执行后再到后台"生成—更新栏目 HTML"重新生成。

五、典型冲突场景诊断

场景 A:列表页是新模板,文章页是旧模板。
诊断:栏目级模板的"列表页"字段已改,但"文章页"字段没改。到栏目修改页查看"文章页模板",统一改后重新生成。

场景 B:前台直接显示 {dede:field.body/} 文本。
诊断:模板文件后缀错误。织梦模板必须是 .htm,写成 .html 不会被解析。改名即可。

场景 C:移动端访问显示 PC 样式。
诊断:移动端模板目录未配置,或 /templets/模板目录/m/ 缺失。检查后台"是否启用手机站"与移动模板文件。

场景 D:换模板后部分页面正常、部分空白。
诊断:新模板调用了旧模板没有的标签(如二开 plus)。在空白页查看源码,定位缺失的标签,补充 plus 文件或修改模板去掉该标签。

六、注意事项

SQL 修改前必须备份:批量改栏目模板的 SQL 一旦写错 WHERE 条件,会把所有栏目模板搞乱。建议先 SELECT tempindex,templist,temparticle FROM dede_arctype 看一遍再 UPDATE。

多套模板并存要明确用途:同一站点保留 default、newstyle、test 三套模板时,建议在目录名加注释(如 newstyle_v2_2024),避免日后忘了哪套是当前生效的。

缓存是排查的最后一关:很多时候"模板冲突"其实是缓存没清。在排查完文件与配置后,务必执行"清缓存 + 重新生成"再下结论。

七、排查后的固化建议

定位并解决冲突后,建议把"模板目录统一、栏目级模板字段标准化"作为站点模板规范写入维护文档,新栏目创建时按规范填写模板路径,避免再次出现混用。同时建立一份"模板对照表"记录每个栏目实际使用的模板文件名,每次改版后更新一次。规范先行、排查有据,才能让织梦模板管理从"凭感觉"变成"可追溯"。