这篇教程将从 核心原理、实现步骤、高级技巧和常见问题 四个方面展开,确保你从入门到精通。

核心原理:织梦模板如何加载?
要理解自定义模板,首先必须明白织梦在显示一个内容页时,是如何决定使用哪个模板文件的。
织梦的加载逻辑遵循一个优先级顺序,从高到低:
- 文章自定义字段:如果文章在后台设置了
自定义模板字段,并且填写了模板文件名,那么系统会优先使用这个模板,这是最精确、最灵活的控制方式。 - 栏目自定义模板:如果文章没有设置自定义模板,系统会查找该文章所属栏目的“自定义模板”设置,如果设置了,则使用这个模板。
- 内容默认模板:如果以上两者都没有设置,系统就会使用后台“系统 -> 系统基本参数 -> 核心设置”中配置的
页模板(通常是article_article.htm)。
自定义内容页模板的核心就是通过设置 “文章自定义模板” 或 “栏目自定义模板” 来覆盖默认的 article_article.htm。
实现步骤:如何设置自定义模板?
我们分两种最常用的场景来讲解。

为单个文章设置专属模板(最灵活)
这种方法适用于你只想让某几篇特殊的文章使用不同的样式,比如一个重要的专访、一个活动专题页等。
步骤 1:创建新的模板文件
-
找到模板目录:登录你的FTP或主机管理面板,进入织梦的模板目录,通常是
/templets/。 -
创建模板文件:在
/templets/目录下,新建一个HTML文件,为了方便管理,建议按栏目或功能命名,
(图片来源网络,侵删)/templets/special_article.htm(用于专题文章)/templets/interview_article.htm(用于访谈文章)/templets/simple_article.htm(用于极简风格的文章)
-
编写模板代码:用你喜欢的HTML编辑器(如VS Code, Sublime Text, Dreamweaver)打开这个新文件,你可以:
- 完全复制
article_article.htm的内容作为基础,然后进行修改。 - 从零开始编写,但必须包含织梦的 全局标签 和 内容标签,否则页面无法获取数据。
关键标签:
- 全局标签:
{dede:include filename="head.htm"/}(头部),{dede:include filename="footer.htm"/}(底部) - 内容标签:
{dede:field.title/}{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/}:发布时间{dede:field.source/}:来源{dede:field.writer/}:作者{dede:field.body/}:文章正文(最重要的部分){dede:field.keywords/}{dede:field.description function='html2text(@me)'/}:描述
示例
special_article.htm<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{dede:field.title/} - {dede:global.cfg_webname/}</title> {dede:include filename="head.htm"/} <style> /* 为这个特殊模板写一些专属样式 */ .special-content { background-color: #f9f9f9; padding: 30px; border-left: 5px solid #ff6b6b; } </style> </head> <body> {dede:include filename="head.htm"/} <div class="special-content"> <h1>{dede:field.title/}</h1> <p class="article-info"> 发布时间:{dede:field.pubdate function='strftime("%Y-%m-%d",@me)'/} | 作者:{dede:field.writer/} | 来源:{dede:field.source/} </p> <hr> <div class="article-detail"> {dede:field.body/} </div> </div> {dede:include filename="footer.htm"/} </body> </html> - 完全复制
步骤 2:在后台文章中指定模板
- 登录织梦后台,进入“内容管理 -> 所有文档”。
- 找到你想要应用新模板的文章,点击 “编辑”。
- 在文章编辑页面,向下滚动,找到 “自定义属性” 这个区域。
- 在 “自定义模板” 的输入框中,填入你刚刚创建的模板文件名,
special_article.htm。 - 点击“保持”或“更新”按钮。
完成! 现在当你访问这篇文章的页面时,织梦就会自动加载 /templets/special_article.htm 这个模板了。
为整个栏目设置统一模板(最常用)
当你希望一个栏目下的所有文章都使用同一种特殊的布局时(比如产品详情页、新闻列表页等),这种方法最高效。
步骤 1:创建模板文件
这个步骤和场景一完全一样,在 /templets/ 目录下创建你的栏目模板,/templets/product_article.htm。
步骤 2:在后台栏目中指定模板
- 登录织梦后台,进入“频道管理 -> 栏目管理”。
- 找到你想要设置新模板的栏目,点击 “更改”。
- 在栏目编辑页面,找到 “高级选项” 标签页,并点击进入。
- 在“高级选项”中,你会看到一个 “自定义模板” 的输入框。
- 在这里填入你的模板文件名,
product_article.htm。 - 点击“确定”保存。
完成! 现在这个栏目下的所有文章(包括未来新增的文章),在显示时都会自动使用 /templets/product_article.htm 这个模板,除非某篇文章单独设置了它自己的“文章自定义模板”。
高级技巧与最佳实践
-
模板命名规范
- 建议使用有意义的名称,如
article_typeA.htm,article_typeB.htm。 - 可以按栏目ID命名,如
article_arctype_5.htm,这样一看就知道是给哪个栏目用的。 - 将所有自定义内容页模板放在一个子文件夹下,如
/templets/custom/,方便管理。
- 建议使用有意义的名称,如
-
利用模板判断标签 有时你不想创建太多模板,而是想在同一个模板里根据不同情况显示不同内容,这时可以使用织梦的判断标签。
示例:根据栏目ID显示不同样式
<div class="article-content"> {dede:field.body/} </div> {dede:if function="in_array(@me, array(5, 8, 10))"} <!-- 如果当前栏目ID是5, 8, 或 10,则显示下载按钮 --> <div class="download-area"> <a href="[field:link/]" class="btn-download">下载相关资料</a> </div> {/dede:if}注意:
@me在这里代表当前栏目的ID,这个功能需要一定的PHP和织梦标签基础。 -
调用当前栏目的其他信息页模板中,你可能需要调用当前栏目的名称、链接等信息,可以使用
typeid变量。<p>本文来自栏目:<a href="{dede:global.cfg_cmsurl/}/plus/list.php?tid={dede:field.id/}">{dede:field.name/}</a></p> -
SEO优化 确保你的自定义模板也包含了正确的SEO标签,如
title、keywords、description,它们可以通过{dede:field.title/},{dede:field.keywords/},{dede:field.description/}正常调用。
常见问题与排查
问题1:我设置了模板,但页面还是显示默认样式。
排查步骤:
- 检查文件名和路径:确保模板文件名和后台填写的一模一样,并且文件确实上传到了
/templets/目录下,注意大小写和后缀名.htm。 - 检查缓存:织梦有强大的缓存机制,请务必在后台点击 “系统 -> 清除全部缓存”。
- 检查标签错误:打开你的自定义模板文件,检查是否有织梦标签写错(比如拼写错误、标签未闭合等),一个标签错误可能导致整个模板无法加载,从而回退到默认模板。
- 检查文件权限:确保模板文件有可读权限(通常是 644)。
问题2:自定义模板里的CSS和JS不生效。
排查步骤:
- 路径问题:模板中的CSS和JS文件路径是相对于模板文件本身的,如果模板在
/templets/下,而CSS在/templets/css/下,那么路径应写成css/style.css。 - 全局标签缺失:确保你的自定义模板头部包含了
{dede:include filename="head.htm"/},这个文件通常会引入网站的全局CSS和JS。
问题3:如何让不同专题(专题ID不同)使用不同模板?
方法:
你可以创建一个通用的模板,special_article.htm,然后在这个模板里使用判断标签来加载不同的子模板。
-
创建多个子模板,如
special_style1.htm,special_style2.htm。 -
在专题里添加一个自定义字段,
style_type,用于存储样式类型(1或2)。 -
创建一个主模板
special_article.htm如下:{dede:include filename="head.htm"/} <h1>{dede:field.title/}</h1> {dede:field.body/} {dede:if function="@me['style'] == 1"} {dede:include filename="special_style1.htm"/} {else if function="@me['style'] == 2"} {dede:include filename="special_style2.htm"/} {else} <!-- 默认样式 --> {/dede:if} {dede:include filename="footer.htm"/}注意:这种方法比较复杂,需要对织梦的底层变量和PHP有一定了解,对于大多数用户,直接为每个专题设置一个栏目,并为该栏目设置自定义模板是更简单的方法。
希望这份详细的教程能帮助你完全掌握织梦的自定义内容页模板功能!
