这是一个非常经典和常见的话题,尤其对于中国的PHP网站开发者来说。

什么是织梦 DedeCMS?
DedeCMS(全称:Dede Content Management System),中文名“织梦内容管理系统”,是一款基于 PHP + MySQL 技术开发的开源网站管理系统,它发布于2004年,在中国曾经是市场占有率最高的CMS之一,尤其盛行于2008-2025年。
核心特点:
- 开源免费:完全免费,代码开源,你可以自由使用、修改和分发。
- 简单易用:后台管理界面直观,对新手友好,无需编写代码即可快速搭建一个网站。
- 功能强大:内置了丰富的功能模块,如:
- 文章系统:发布、管理文章,支持多级栏目、专题。
- 图集系统:创建和管理图片集。
- 下载系统:提供文件下载功能。
- 商城系统:基础的电商功能(需要插件或二次开发)。
- 会员系统:用户注册、登录、权限管理。
- 评论、留言、投票等互动功能。
- SEO友好:内置了SEO设置,如URL伪静态、自定义标题、关键词、描述等,有助于搜索引擎优化。
- 模板与标签分离:这是其最核心、最强大的特性,也是我们接下来要重点讲解的。
适用场景:
- 企业官网
- 个人博客
- 新闻资讯网站
- 门户网站
- 下载站、图库站等
注意:随着技术的发展,DedeCMS的架构和代码相对老旧,存在一些安全漏洞,且开发模式(面向过程)与现代框架(如Laravel, ThinkPHP等,面向对象)有所不同,它主要用于维护老旧网站或一些对技术要求不高的新项目。
织梦模板系统详解
织梦的模板系统是其精髓所在,它实现了 与表现分离” 的思想。
- 存储在数据库里,由后台管理。
- 表现:写在HTML模板文件里,由前端设计师制作。
- 桥梁:通过织梦的 模板引擎 和 ,将数据库里的内容动态地填充到HTML模板中,最终生成用户看到的网页。
模板文件的位置和结构
织梦的模板文件通常位于网站根目录下的 /templets/ 文件夹中。

/你的网站根目录/
├── /templets/ # 模板文件夹
│ ├── /default/ # 默认模板风格
│ │ ├── index.html # 首页模板
│ │ ├── list_*.html # 列页模板 (list_1.html, list_2.html ...)
│ │ ├── article_*..html # 文档页模板 (article_1.html, article_2.html ...)
│ │ ├── head.html # 公共头部
│ │ ├── foot.html # 公共底部
│ │ └── ... # 其他页面模板
│ └── /你的风格名/ # 你自己创建的其他模板风格
├── /dede/ # 后台管理目录
├── /data/ # 缓存等数据目录
└── ...
核心概念:模板引擎和标签
织梦的模板引擎负责解析模板文件中的特殊标记(即“标签”),并从数据库中获取数据,最终替换这些标记,生成HTML代码。
标签的语法:
{dede:标签名 属性='值'} ... {/dede:标签名} (闭合标签)
或
{dede:标签名 属性='值' /} (自闭合标签)
常用标签详解
下面是一些最常用、最核心的织梦标签,理解了它们,你就能看懂和修改大部分织梦模板。
a) 全局标签 (可在任何页面使用)
-
{dede:global name='cfg_webname'/}- 作用:获取网站配置的全局变量,如网站名称、网站路径等。
- 示例:
{dede:global name='cfg_webname'/}会显示你在后台设置的网站名称。
-
{dede:include filename='head.html'/}- 作用:包含一个公共模板文件,实现代码复用,通常用于头部、底部、导航栏。
- 示例:
{dede:include filename='head.html'/}会把head.html的内容原样插入到当前位置。
b) 首页标签
-
{dede:arclist}(文章列表标签)- 作用:在首页或列表页调用文章列表,是最最核心的标签。
- 常用属性:
typeid: 指定栏目ID,只调用该栏目下的文章。typeid='1'。row: 调用文章数量。row='10'。titlelen: 标题长度。titlelen='30'(截取30个字符)。infolen: 内容摘要长度。infolen='150'。imgwidth&imgheight: 缩略图宽高。
- 示例:调用ID为1的栏目下的10篇文章,标题显示20个字符。
{dede:arclist typeid='1' row='10' titlelen='20'} <li> <a href="[field:arcurl/]">[field:title/]</a> <p>[field:info/]...</p> </li> {/dede:arclist}
-
{dede:channel}(栏目列表标签)- 作用:调用一级栏目。
- 常用属性:
type:top表示顶级栏目。row: 调用栏目数量。
- 示例:调用所有顶级栏目。
{dede:channel type='top' row='8'} <a href="[field:typelink/]">[field:typename/]</a> {/dede:channel}
c) 列表页标签
列表页模板文件通常命名为 list_x.html (x为栏目ID)。
-
{dede:list}(当前栏目文章列表标签)- 作用:与
arclist类似,但专门用于列表页,自动调用当前栏目的文章。 - 常用属性:
row,titlelen,infolen等,与arclist一致。 - 示例:
{dede:list pagesize='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span> </li> {/dede:list}
- 作用:与
-
{dede:pagelist}(分页条标签)- 作用:生成文章列表的分页导航。
- 示例:
{dede:pagelist listsize='4' listitem='index pre pageno next end '/}
d) 文档页/内容页标签
页模板文件通常命名为 article_x.html (x为栏目ID)。
-
{dede:field}(文章字段标签)- 作用:调用当前文章的单个字段。
- 常用属性:
name: 指定字段名。function: 对字段值进行函数处理。
- 示例:
{dede:field.title/}: 显示文章标题。{dede:field.pubdate function="MyDate('Y-m-d H:i:s', @me)"/}: 显示发布日期,并格式化。{dede:field.body/}: 显示文章正文内容。{dede:field.keywords/}: 显示文章关键词。
-
{dede:php}(PHP代码标签)- 作用:在模板中直接嵌入PHP代码,非常强大,但也带来安全风险。
- 示例:调用当前文章的“上一篇”和“下一篇”。
{dede:prenext get='pre'/} 上一篇 {dede:prenext get='next'/} 下一篇
模板制作流程
- 准备HTML文件:使用Dreamweaver、VS Code或Sublime Text等工具,制作一个完整的静态HTML网站(首页、列表页、内容页等)。
- 切分模板:将HTML文件切分成多个可复用的部分,如
head.html,foot.html,index.html等,并放入/templets/default/目录。 - 替换静态内容为标签:
- 替换为
{dede:global name='cfg_webname'/}。 - 将导航栏的静态链接替换为
{dede:channel type='top'}循环。 - 将文章列表区域替换为
{dede:arclist}或{dede:list}循环。 - 、内容等替换为
{dede:field.xxx}。
- 替换为
- 后台关联:登录织梦后台,在“模板” -> “默认模板管理”中,为你创建的每个栏目选择对应的模板文件(为“新闻”栏目选择
list_1.html)。 - 生成网站:在后台“生成”菜单中,选择“一键更新网站”,织梦会遍历所有模板和内容,生成最终的HTML页面并上传到服务器。
总结与现代视角
| 特性 | 描述 | 优点 | 缺点 |
|---|---|---|---|
| 模板与标签 | 通过 {dede:xxx} 标签将数据与HTML分离。 |
开发效率高,不懂PHP的前端也能制作模板;逻辑清晰,分工明确。 | 标签学习成本,需要记忆大量标签和属性;灵活性差,复杂逻辑难以实现。 |
| 面向过程 | 代码结构偏向过程化,而非现代的MVC/OOP模式。 | 简单直接,易于理解和上手。 | 代码混乱,难以维护和扩展;安全性问题,如 {dede:php} 标签易被XSS攻击。 |
| 文件缓存 | 默认生成静态HTML,访问速度快,减轻服务器压力。 | 性能好,适合高并发访问的静态内容。 | 更新不及时后需要手动“生成”;动态交互困难,不适合纯动态应用。 |
现代观点:
虽然DedeCMS的时代正在过去,但它的“模板标签”思想深刻影响了后来的许多PHP框架(如ThinkPHP的模板引擎),对于今天的学习者来说:
- 历史价值:了解DedeCMS可以帮助你理解早期PHP网站开发的模式和思想。
- 实践价值:如果你需要维护一个老旧的织梦网站,那么掌握其模板系统是必备技能。
- 技术演进:从DedeCMS的模板标签,到现代框架的 Blade (Laravel)、Twig (Symfony)、ThinkPHP模板 等,你可以清晰地看到模板引擎的演进:从简单标签到更强大、更安全、更符合逻辑的模板继承、组件化等高级特性。
织梦DedeCMS的模板系统是一个为快速建站而生的、简单高效的解决方案,它虽然技术老旧,但其核心思想——“内容与表现分离”——至今仍然是Web开发的基本原则之一。
