织梦DedeCMS 5.7 模板修改全攻略
织梦(DedeCMS)的核心思想是“内容与表现分离”,这意味着网站的)存储在数据库中,而外观(样式)和布局(结构)则由模板文件控制,修改模板,本质上就是修改这些文件来改变网站的显示效果。

第一部分:基础知识准备
在开始修改之前,你需要了解几个核心概念和文件结构。
什么是模板?
模板是织梦生成HTML页面的“图纸”,它是一个HTML文件,但里面嵌入了织梦特有的模板标签(标签),这些标签就像一个个指令,告诉织梦在生成页面时,从哪里获取数据并如何显示。
模板文件结构
织梦的模板文件都存放在 /templets/ 目录下,默认情况下,里面会有一个 default/ 文件夹,这是织梦默认的模板。
/templets/
├── default/ # 默认模板文件夹
│ ├── index.html # 首页模板
│ ├── list_article.htm # 文章列表页模板
│ ├── article_article.htm # 文章内容页模板
│ ├── search.htm # 搜索页模板
│ ├── head.htm # 公共头部文件
│ ├── foot.htm # 公共底部文件
│ └── ... # 其他页面模板
└── your_template/ # 你自己创建的模板文件夹(强烈推荐)
└── ... # 把 default 文件夹复制一份,重命名,然后在这里修改
最佳实践:
永远不要直接修改 default 文件夹里的模板! 因为以后织梦升级时,这些修改会被覆盖,正确的做法是:

- 进入织梦后台 -> 系统 -> 系统基本参数 -> 核心设置。
- 找到 “默认模板目录”,将其修改为你自己创建的文件夹名(如
your_template)。 - 将
/templets/default/整个文件夹复制一份,并重命名为your_template。 - 之后所有的模板修改,都在
your_template文件夹里进行。
第二部分:核心模板标签
这是修改模板的“语法”,必须掌握,常用标签分为几大类:
全局标签
可以在任何模板文件中使用。
{dede:global.cfg_webname/}:显示网站名称。{dede:global.cfg_weburl/}:显示网站网址。{dede:global.cfg_keywords/}:显示网站关键词。{dede:global.cfg_description/}:显示网站描述。
文章列表标签
用于文章列表页、首页文章推荐等。
-
{dede:arclist}:文章列表循环标签,最常用。
(图片来源网络,侵删)typeid: 指定栏目ID,只显示该栏目下的文章。row: 显示文章数量。titlelen: 标题长度。infolen: 内容摘要长度。imgwidth: 缩略图宽度。imgheight: 缩略图高度。orderby: 排序方式,如pubdate(发布时间),click(点击量),id(ID)。channelid: 频道ID,1代表文章。
示例: 在首页调用5篇最新文章,标题长度30字。
{dede:arclist row='5' titlelen='30'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:arclist} -
[field:xxx/]:这是在{dede:arclist}循环内部使用的字段标签。[field:title/]。[field:arcurl/]:文章链接。[field:pubdate/]:发布时间。[field:description/]:[field:litpic/]:文章缩略图。[field:click/]:文章点击量。
页标签
用于 article_article.htm。
{dede:field}:获取当前文章的单个字段。{dede:field.title/}。{dede:field.pubdate/}:发布时间。{dede:field.source/}:文章来源。{dede:field.writer/}:文章作者。{dede:field.body/}:文章正文内容。{dede:field.keywords/}:文章关键词。{dede:field.description/}:文章描述。
栏目标签
用于显示栏目信息。
-
{dede:channel}:栏目列表循环标签。type='top': 只显示顶级栏目。row: 显示栏目数量。
示例: 显示所有顶级栏目。
<nav> {dede:channel type='top'} <li><a href="[field:typelink/]">[field:typename/]</a></li> {/dede:channel} </nav> -
[field:typename/]:栏目名称。 -
[field:typelink/]:栏目链接。
其他常用标签
{dede:include filename='head.htm' /}:包含(引入)一个公共文件,用于制作网站的头部、底部、侧边栏等。{dede:pagelist listsize='4' listitem='index,pre,next,end,pageno'/}:分页条。
第三部分:实战修改教程
教程1:修改网站Logo
- 准备Logo图片:将你的Logo图片(如
logo.png)上传到网站目录的/images/文件夹下。 - 找到模板文件:打开
/templets/your_template/文件夹下的head.htm文件。 - 定位代码:在
head.htm中找到Logo的<img>标签,通常长这样:<a href="{dede:global.cfg_cmsurl/}/"><img src="/templets/default/images/logo.png" width="260" height="60" alt="{dede:global.cfg_webname/}" /></a> - 修改路径:将
src属性中的路径修改为你自己上传的Logo路径:<a href="{dede:global.cfg_cmsurl/}/"><img src="/images/logo.png" width="260" height="60" alt="{dede:global.cfg_webname/}" /></a> - 保存并刷新:保存文件,然后刷新网站前台,就能看到新的Logo了。
教程2:修改首页文章列表的样式
假设你想要把首页的文章列表从简单的 <li> 变成带缩略图和摘要的卡片式布局。
-
找到首页模板:打开
/templets/your_template/index.html文件。 -
找到调用列表的代码:找到
{dede:arclist}标签部分。 -
修改HTML结构:将原来的简单
<li>结构替换成更复杂的卡片结构。<!-- 修改前 --> <ul> {dede:arclist row='8'} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclist} </ul> <!-- 修改后 --> <div class="article-list"> {dede:arclist row='8' imgwidth='200' imgheight='150' titlelen='40' infolen='100'} <div class="article-item"> <a href="[field:arcurl/]"> <img src="[field:litpic/]" alt="[field:title/]" /> </a> <h3><a href="[field:arcurl/]">[field:title/]</a></h3> <p class="summary">[field:description/]</p> <p class="info">[field:pubdate function="MyDate('Y-m-d',@me)"] / [field:click/] 次阅读</p> </div> {/dede:arclist} </div> -
添加CSS样式:为了让卡片好看,你需要在模板的
<head>部分引入CSS文件,或者在<style>标签里写样式,在head.htm中找到引入CSS的地方,添加一个新的CSS文件路径,或者在<style>标签里添加以下代码:.article-list { display: flex; flex-wrap: wrap; gap: 20px; } .article-item { border: 1px solid #eee; padding: 10px; width: calc(25% - 20px); box-sizing: border-box; } .article-item img { width: 100%; height: auto; } .article-item h3 { font-size: 16px; margin: 10px 0; } .article-item .summary { color: #666; font-size: 14px; } .article-item .info { color: #999; font-size: 12px; } -
保存并刷新:保存所有文件,刷新首页,新的列表样式就出现了。
教程3:调用指定栏目的文章
假设你想在首页的某个位置,专门调用“产品介绍”这个栏目的文章。
- 获取栏目ID:进入后台,【栏目】->【所有栏目】,找到“产品介绍”栏目,记下它的ID(比如是 5)。
- 在首页模板中添加代码:在
index.html的你想要显示的位置,添加如下代码:<h2>产品介绍</h2> <ul> {dede:arclist typeid='5' row='5' titlelen='30'} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclist} </ul>这里
typeid='5'就是指定了只调用ID为5的栏目下的文章。
第四部分:高级技巧
模板继承(模板嵌套)
很多页面都有相同的部分,如头部、导航、底部,如果每个页面都写一遍,会很麻烦且难以维护,这时就需要模板继承。
-
创建公共文件:将重复的代码块(如头部、底部)分别放到
head.htm和foot.htm中。 -
在子模板中引入:在其他页面模板(如
index.html,list_article.htm)的开头和结尾,使用{dede:include}标签引入。<!-- index.html --> {dede:include filename='head.htm'/} <!-- 这里是首页独有的内容 --> <h1>欢迎来到首页</h1> {dede:arclist row='10'}...{/dede:arclist} {dede:include filename='foot.htm'/}
条件判断 if
有时需要根据不同情况显示不同内容,首页显示A,列表页显示B”。
- 语法:
{dede:if condition='表达式'}...内容...{/dede:if}或{dede:if}...{else}...{/dede:if} - 示例:只在首页显示一个Banner。
{dede:if $ismodule=='index'} <div class="banner"> <!-- 你的Banner代码 --> </div> {/dede:if}常用的系统变量有:
$ismodule(判断是否为首页模块),$typeid(当前栏目ID)。
自定义函数
织梦的模板标签支持使用PHP函数来格式化输出,非常强大。
- 日期格式化:
[field:pubdate function="MyDate('Y-m-d H:i:s',@me)"/]@me代表当前字段的原始值。'Y-m-d H:i:s'是你想要的日期格式。
- 截取文字:
[field:title function="cn_substr(@me, 20)"/]截取标题前20个字符。 - 去除HTML标签:
[field:description function="htmlspecialchars(cn_substr(@me, 100))"/]先截取100字符,再转义HTML,用于安全显示摘要。
第五部分:调试与排错
修改模板时,最常见的问题就是页面显示不正常。
检查标签语法
- 标签是否闭合:
{dede:arclist}必须有对应的{/dede:arclist}。 - 引号是否匹配:
typeid='5'中的引号必须是成对的。 - 拼写错误:
titlelen不要写成titlen。
清除缓存
织梦有强大的缓存机制,很多时候你修改了模板,但前台没变化,就是因为缓存了。
- 后台手动清除:进入后台 -> 系统 -> 系统设置 -> 清除全部缓存。
- 关闭缓存:在后台 -> 系统 -> 系统基本参数 -> 性能选项 中,可以设置关闭模板缓存(不推荐长期关闭,会影响性能)。
使用浏览器开发者工具
这是最强大的调试工具。
- 按
F12打开开发者工具。 - 查看源代码:确认生成的HTML是否是你想要的,如果标签被原样输出(如
{dede:field.title/}),说明标签没有被解析,通常是语法错误或缓存问题。 - 使用“检查”功能:点击页面上的元素,可以实时看到它的HTML结构和CSS样式,方便你定位样式问题并进行修改。
织梦模板修改是一个“理论 + 实践”的过程。
- 理论:理解模板文件夹结构、掌握核心模板标签的用法。
- 实践:从修改Logo、列表等简单部分开始,逐步尝试复杂的布局和调用。
- 善用工具:浏览器开发者工具是你的好朋友,多利用它来调试。
- 备份!备份!备份! 在修改任何文件之前,务必备份原始模板,以防出错无法恢复。
希望这份详细的教程能帮助你顺利掌握织梦5.7的模板修改技能!祝你建站愉快!
