DedeCMS(织梦内容管理系统)是国内非常流行的一款基于 PHP + MySQL 的开源网站管理系统,它的核心特点之一就是模板与程序分离的设计理念,这使得网站的开发、维护和风格更换变得非常简单。

dedecms模板idedecms
(图片来源网络,侵删)

下面我将从几个方面全面介绍 DedeCMS 模板。


什么是 DedeCMS 模板?

DedeCMS 模板可以理解为网站的“皮肤”或“外观”,它是一系列静态的 HTML 文件,其中嵌入了 DedeCMS 特有的模板标签,当用户访问网站时,DedeCMS 程序会读取这些模板文件,并根据模板标签的规则,从数据库中提取对应的内容,最终生成并输出一个完整的 HTML 页面给用户。

核心思想:

  • 美工人员 只需要专注于 HTML、CSS 和 JavaScript 的编写,设计出网站的静态页面。
  • 程序人员 负责配置好模板标签,实现动态数据的调用。
  • 网站管理员 可以在不修改任何程序代码的情况下,通过更换模板来改变整个网站的样式。

模板的核心构成:模板标签

模板标签是 DedeCMS 模板的灵魂,它们是写在 HTML 注释中的一些特殊指令,格式通常为 {dede:标签名 属性='值'}。 调用标签 (最常用)**

dedecms模板idedecms
(图片来源网络,侵删)

这是模板中最核心的部分,用于从数据库中获取文章、栏目、图片等信息。

  • 文章列表标签 (arclist): 用于在首页、列表页等地方调用文章列表。

    {dede:arclist typeid='1' titlelen='30' row='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:arclist}
    • typeid='1': 调用 ID 为 1 的栏目下的文章。
    • titlelen='30': 标题长度限制为 30 个字符。
    • row='10': 调用 10 条记录。
    • [field:arcurl/]: 单条文章链接的变量。
    • [field:title/]: 单条文章标题的变量。
    • [field:pubdate/]: 单条文章发布日期的变量。
  • 栏目列表标签 (channel): 用于调用所有一级栏目。

    {dede:channel type='top'}
    <a href="[field:typeurl/]">[field:typename/]</a>
    {/dede:channel}
  • 标签 (field): 用于在文章内容页 (article_article.htm) 中调用当前文章的详细信息。

    dedecms模板idedecms
    (图片来源网络,侵删)
    <h1>[field:title/]</h1>
    <div class="info">作者:[field:writer/] &nbsp; 发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</div>
    <div class="content">
        [field:body/]
    </div>
  • 其他常用标签:

    • {dede:flink}: 调用友情链接。
    • {dede:myad}: 调用广告。
    • {dede:php}: 执行 PHP 代码,灵活性最高。

系统变量

用于获取系统级别的信息,如网站名称、网站路径等。

  • {dede:global.cfg_webname/}: 网站名称。
  • {dede:global.cfg_indexurl/}: 网站首页链接。
  • {dede:global.cfg_templeturl/}: 当前模板的目录路径。

逻辑判断标签

用于实现一些简单的条件判断,让模板更智能。

  • if:

    {dede:field name='typeid' runphp='yes'}
    if(@me == 1) @me = "<span class='current'>首页</span>";
    else @me = "<a href='/'>首页</a>";
    {/dede:field}
  • in:

    {dede:field name='typeid' runphp='yes'}
    $arr = array(1, 2, 3);
    if(in_array(@me, $arr)) @me = "这个栏目在特定列表里";
    else @me = "这个栏目不在特定列表里";
    {/dede:field}

模板文件的目录结构

一个标准的 DedeCMS 模板文件存放在 /templets/ 目录下,通常以一个文件夹的形式存在,/templets/default/

一个完整的模板结构通常包含以下文件:

文件名 用途 说明
index.htm 首页模板 网站主页的模板文件。
list_栏目ID.htm 列表页模板 list_1.htm 表示 ID 为 1 的栏目的列表页模板。
article_artlist.htm 文章列表页模板 如果某个栏目没有设置专属的 list_x.htm,则默认调用此文件。
article_article.htm 页模板 所有文章详情页都使用这个模板。
index_栏目ID.htm 封面页模板 用于不需要文章列表,只需要展示一个固定内容的栏目页面(如“关于我们”、“联系我们”)。
search.htm 搜索页模板 网站搜索结果页的模板。
head.htm 头部公共模板 通常包含网站的 logo、导航栏等,通过 {dede:include file='head.htm'/} 在其他模板中引用。
footer.htm 底部公共模板 通常包含版权信息、友情链接等,通过 {dede:include file='footer.htm'/} 引用。
style/ CSS 样式文件夹 存放 style.css 等样式表文件。
images/ 图片文件夹 存放模板专用的图片资源。
js/ JavaScript 文件夹 存放 js 脚本文件。

如何制作或修改 DedeCMS 模板?

步骤 1:准备静态 HTML 源码

  • 使用 Dreamweaver、VS Code、Sublime Text 等工具,设计并切出网站的静态 HTML 页面(包含首页、列表页、内容页等)。

步骤 2:替换静态内容为模板标签

  • 将静态 HTML 中的动态内容(如文章标题、链接、列表)替换为对应的 DedeCMS 模板标签。
  • 将网站的通用部分(如头部、底部)拆分为独立的 head.htmfooter.htm 文件,并在主模板中通过 {dede:include} 标签引入。

步骤 3:设置模板

  • 登录 DedeCMS 后台,进入【系统】-> 【系统基本参数】-> “核心设置”,在“默认主页模板”等选项中选择你刚刚创建的模板文件名(如 index.htm)。
  • 对于栏目,可以在【栏目管理】中编辑每个栏目,为其指定独立的列表模板(list_x.htm)或封面模板(index_x.htm)。

步骤 4:更新网站缓存

  • 在后台点击【生成】-> “更新主页HTML”“更新栏目HTML”,让 DedeCMS 根据你的新模板生成静态页面。

总结与优点

  • 优点:

    1. 易于上手: 对于熟悉 HTML 的前端开发者来说,学习 DedeCMS 模板标签非常快。
    2. 高效开发: 模板与程序分离,大大提高了开发效率,方便团队协作。
    3. 维护方便: 更换网站风格只需上传一套新模板并稍作配置,无需改动数据库和程序。
    4. SEO友好: 默认生成静态 HTML 页面,对搜索引擎优化非常有利。
    5. 资源丰富: 网上有海量的免费和付费 DedeCMS 模板可供选择。
  • 缺点:

    1. 标签限制: 对于非常复杂的动态逻辑,模板标签可能显得力不从心,需要借助 {dede:php} 标签,但这会增加维护难度。
    2. 安全性: 早期版本的 DedeCMS 因模板标签的灵活性存在一些安全隐患,但新版本已大幅改善。
    3. 性能: 在大量数据和高并发访问下,标签解析和文件缓存机制可能不如一些现代框架(如 Laravel, ThinkPHP)高效。

DedeCMS 模板是其强大功能的核心体现,它通过一套简单而强大的标签系统,让非专业程序员也能轻松搭建和管理功能丰富的网站,尽管现在有更多现代化的 CMS 和框架出现,但 DedeCMS 因其简单、高效和庞大的用户基础,尤其是企业官网、资讯类网站领域,仍然拥有广泛的应用。