什么是 Dedecms 主题模板?
DedeCMS 的主题模板就是一套用于控制网站外观和布局的文件集合,它决定了你的网站长什么样,包括:

- 页面布局:头部、导航、主体内容、侧边栏、页脚等。
- 内容样式、字体、颜色、图片大小等。
- 交互元素:搜索框、评论表单等。
这些模板文件主要由 HTML 代码和 DedeCMS 的模板标签 混合而成。
模板文件的基本结构
一个标准的 DedeCMS 主题(在 /templets/ 目录下)通常包含以下几个核心部分:
index.html:网站首页模板。article_article.htm页模板(article是栏目ID,article是文章页的默认标识)。list_category.htm:栏目列表页模板(category是栏目ID)。search.htm:搜索结果页模板。head.htm:公共头部模板,通常包含<head>标签、网站标题、Logo、主导航等,可以在其他模板中通过{include file='head.htm'}引用。footer.htm:公共底部模板,通常包含版权信息、友情链接、统计代码等,同样可以{include file='footer.htm'}引用。
重要目录:
/templets/:存放所有模板文件。/templets/default/:DedeCMS 自带的默认主题模板。/templets/你的主题名/:你自己创建和修改的主题模板。
核心模板标签详解
这是 DedeCMS 模板的精髓,这些标签就像函数一样,在模板被解析时会被替换成实际的数据。

全局标签
这些标签可以在任何模板文件中使用。
{dede:global.cfg_webname/}:获取网站后台设置的“网站名称”。{dede:global.cfg_weburl/}:获取网站地址。{dede:global.cfg_description/}:获取网站描述。{dede:global.cfg_keywords/}:获取网站关键词。
首页常用标签
-
{dede:arclist}:文章列表标签,用于首页、栏目页等调用文章。- 常用属性:
typeid: 指定栏目ID,调用该栏目下的文章。typeid='0'表示调用所有栏目。titlelen: 标题长度,如titlelen='30'。row: 调用文章数量,如row='10'。col: 每行显示数量,col='1'表示单列。orderby: 排序方式,如orderby='hot'(按点击量),orderby='pubdate'(按发布日期)。
- 底层模板字段:在
{dede:arclist}和/dede:arclist之间,可以使用字段变量。[field:title/]。[field:arcurl/]:文章链接。[field:pubdate function="MyDate('Y-m-d',@me)"/]:发布日期,使用function进行格式化。[field:click/]:点击次数。[field:litpic/]:文章缩略图。
示例:调用首页最新5篇文章
{dede:arclist row='5' titlelen='30' orderby='pubdate'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d',@me)"]</span> </li> {/dede:arclist} - 常用属性:
-
{dede:channel}:栏目列表标签,用于调用一级栏目。
(图片来源网络,侵删)- 常用属性:
type='top':仅调用顶级栏目。row='10':调用栏目数量。
- 底层模板字段:
[field:typename/]:栏目名称。[field:typeurl/]:栏目链接。
示例:调用主导航
<nav> {dede:channel type='top'} <a href="[field:typeurl/]">[field:typename/]</a> {/dede:channel} </nav> - 常用属性:
列表页常用标签
列表页通常使用 list_*.htm 文件。
-
{dede:list}:列表页内容标签,功能和arclist类似,但分页功能更强大。- 常用属性:
pagesize: 每页显示文章数。
- 底层模板字段:与
arclist相同。
示例:列表页文章循环
{dede:list pagesize='10'} <div class="post"> <h2><a href="[field:arcurl/]">[field:title/]</a></h2> <div class="info">发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</div> <p>[field:description/]...</p> </div> {/dede:list} - 常用属性:
-
{dede:pagelist}:分页标签,用于生成分页导航。- 常用属性:
listsize: 显示的页码数量。listitem: 显示的分页项,如listitem='index,pre,next,end,option'。
示例:列表页分页
<div class="pagelist"> {dede:pagelist listitem='index,pre,next,end,option' listsize='5'/} </div> - 常用属性:
页常用标签
页通常使用 article_*.htm 文件。
-
{dede:field}:获取文章的单个字段。- 常用属性:
name: 字段名。
- 常用字段:
{dede:field.title/}。{dede:field.pubdate function="MyDate('Y-m-d H:i:s',@me)"/}:发布时间。{dede:field.source/}:文章来源。{dede:field.writer/}:文章作者。{dede:field.click/}:点击次数。{dede:field.body/}:文章正文内容(重要)。
示例:文章内容页头部
<h1>{dede:field.title/}</h1> <div class="article-info"> <span>发布时间:{dede:field.pubdate function="MyDate('Y-m-d',@me)"/}</span> <span>点击:{dede:field.click/}</span> </div> - 常用属性:
-
{dede:field name='body'/}:这是最重要的标签,它会输出文章编辑器里的所有内容。
如何创建和修改一个主题模板?
步骤 1:复制默认主题
最安全的方法是先复制 /templets/default/ 文件夹,重命名为你自己的主题名,mytheme。
步骤 2:修改模板文件
用代码编辑器(如 VS Code, Sublime Text, Dreamweaver)打开 /templets/mytheme/ 下的模板文件(如 index.html)。
- 搭建 HTML 结构:用普通的 HTML 和 CSS 搭建出你想要的页面布局。
- 替换静态内容为动态标签:
-
<title>我的网站</title>替换为{dede:global.cfg_webname/}。 - 将导航栏的
<a href="#">首页</a>替换为{dede:channel type='top'}<a href="[field:typeurl/]">[field:typename/]</a>{/dede:channel}。 - 将文章列表的静态 HTML 替换为
{dede:arclist}...{/dede:arclist}循环。
-
- 引入公共文件:将重复的头部和底部代码提取出来,分别保存为
head.htm和footer.htm,然后在其他模板中使用{include file='head.htm'}和{include file='footer.htm'}引入。
步骤 3:后台设置主题
登录 DedeCMS 后台,进入 “系统” -> “系统基本参数” -> “核心设置”,找到 “默认模板风格” 选项,选择你刚刚创建的 mytheme。
步骤 4:生成和更新 修改完模板后,需要在后台的 “生成” 菜单下重新生成相应的页面(如首页、栏目页、文章页),新的样式才会生效。
常用模板技巧
-
判断标签:使用
if/else逻辑。{dede:field name='typeid' runphp='yes'} if(@me == 5) { @me = "<span class='current'>关于我们</span>"; } else { @me = "<a href='/about/'>关于我们</a>"; } {/dede:field} -
自定义函数:在
include/extend.func.php文件中添加自定义 PHP 函数,然后在模板中调用。// 在 extend.func.php 中 function subtext($text, $length) { if(mb_strlen($text, 'UTF-8') > $length) { return mb_substr($text, 0, $length, 'UTF-8').'...'; } return $text; }// 在模板中调用 [field:description function="subtext(@me, 100)"/]
-
调用子栏目:在列表页调用当前栏目的子栏目。
{dede:channel type='son' typeid=''} <a href="[field:typeurl/]">[field:typename/]</a> {/dede:channel}
资源和社区
- 官方模板库:DedeCMS 官网会提供一些官方和认证的模板。
- 第三方模板网站:如 Dedecms 模板吧、站长素材等网站有大量免费的和付费的商业模板。
- 开发者社区:CSDN、博客园、知乎等平台上有大量关于 DedeCMS 模板开发的教程和问答。
DedeCMS 的模板系统虽然有其特定的语法,但一旦掌握了核心标签和文件结构,修改和创建一个个性化主题就变得非常直接,关键在于 “模仿、修改、理解”,从默认主题开始,逐步替换和调整,最终达到你想要的效果。
