这个说法通常有两种理解,我会分别进行阐述:

dede不带数据的模板
(图片来源网络,侵删)
  1. 模板本身没有数据,需要通过动态调用(标签)来获取并显示数据。 (这是最常见、最核心的含义)
  2. 一个静态的、独立的HTML文件,不包含任何DedeCMS的标签。 (通常是用于制作静态页面或作为前端开发的基础)

下面我们重点讲解第一种,因为它与DedeCMS的核心工作方式紧密相关。


核心概念:模板(HTML)与数据(数据库)的分离

DedeCMS(织梦内容管理系统)的核心思想就是 “模板与数据分离”

  • 模板: 就是一个纯粹的HTML文件,里面包含了网站的样式、布局和结构,但它本身是“空”的,没有实际的内容。
  • 数据: 存储在网站数据库里的信息,比如文章标题、文章内容、产品图片、用户评论等。
  • DedeCMS的模板引擎定义的特殊代码,用来在模板中“挖坑”,告诉系统“这里需要从数据库里获取什么数据,并以什么格式显示出来”。

一个不带数据的模板,就是一个只有HTML结构和标签占位符,但没有真实内容的文件。


如何制作和使用一个“不带数据的模板”?

这个过程可以分为三个步骤:制作静态HTML -> 制作模板文件 -> 填充数据标签

dede不带数据的模板
(图片来源网络,侵删)

第1步:制作一个静态的HTML页面

你可以用任何你喜欢的方式(如Dreamweaver、VS Code、Sublime Text,甚至手写)制作一个完整的、看起来很漂亮的静态HTML页面。

示例:index.html (一个静态首页)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">我的网站首页</title>
    <link rel="stylesheet" href="/static/css/style.css">
</head>
<body>
    <header>
        <div class="logo">我的Logo</div>
        <nav>
            <ul>
                <li><a href="#">首页</a></li>
                <li><a href="#">关于我们</a></li>
                <li><a href="#">产品展示</a></li>
                <li><a href="#">联系我们</a></li>
            </ul>
        </nav>
    </header>
    <main>
        <section class="banner">
            <!-- 这里是轮播图 -->
            <img src="/static/images/banner1.jpg" alt="Banner">
        </section>
        <section class="news-list">
            <h2>最新资讯</h2>
            <ul>
                <li>
                    <a href="#">这里是文章标题一,需要替换成动态的</a>
                    <span>2025-10-27</span>
                </li>
                <li>
                    <a href="#">这里是文章标题二,也需要替换成动态的</a>
                    <span>2025-10-26</span>
                </li>
                <li>
                    <a href="#">这里是文章标题三,同样需要替换</a>
                    <span>2025-10-25</span>
                </li>
            </ul>
        </section>
        <section class="products">
            <h2>产品推荐</h2>
            <div class="product-grid">
                <div class="product-item">
                    <img src="/static/images/product1.jpg" alt="产品1">
                    <h3>产品名称一</h3>
                    <p>产品简介一,需要动态获取...</p>
                </div>
                <div class="product-item">
                    <img src="/static/images/product2.jpg" alt="产品2">
                    <h3>产品名称二</h3>
                    <p>产品简介二,需要动态获取...</p>
                </div>
            </div>
        </section>
    </main>
    <footer>
        <p>&copy; 2025 我的网站 版权所有</p>
    </footer>
</body>
</html>

这个 index.html 就是一个 “不带数据的模板” 的雏形,它有完整的结构,但内容都是写死的。

第2步:将静态HTML转换为DedeCMS模板文件

你需要将这个HTML文件放到DedeCMS指定的模板目录下,通常是 /templets/你的模板文件夹名/

dede不带数据的模板
(图片来源网络,侵删)

假设你的模板文件夹叫 mydemo,那么就把 index.html 放到 /templets/mydemo/ 目录下。

为了方便管理,通常会拆分成多个文件,

  • index.htm (首页主模板)
  • head.htm (头部模板)
  • footer.htm (底部模板)
  • article_list.htm (文章列表页模板)

第3步:用DedeCMS标签替换静态内容

这是最关键的一步,你需要在模板文件中,用DedeCMS的标签去替换那些需要动态显示的内容。

修改后的 index.htm (DedeCMS模板)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">{dede:global.cfg_webname/}</title> <!-- 使用全局变量替换网站标题 -->
    <link rel="stylesheet" href="/static/css/style.css">
    {dede:include filename="head.htm"/} <!-- 引入头部公共模板 -->
</head>
<body>
    <main>
        <section class="banner">
            <!-- 调用一个幻灯片标签,通常需要配合JS和CSS -->
            {dede:arclist flag='h' row='5'}
            <img src="[field:litpic/]" alt="[field:title/]">
            {/dede:arclist}
        </section>
        <section class="news-list">
            <h2>最新资讯</h2>
            <ul>
                <!-- 调用文章列表标签,获取最新5条文章 -->
                {dede:arclist row='5' titlelen='30'}
                <li>
                    <!-- [field:title/] 是一个字段标签,表示文章标题 -->
                    <a href="[field:arcurl/]">[field:title/]</a> 
                    <!-- [field:pubdate/] 是发布日期,通过function格式化 -->
                    <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
                </li>
                {/dede:arclist}
            </ul>
        </section>
        <section class="products">
            <h2>产品推荐</h2>
            <div class="product-grid">
                <!-- 调用自定义模型列表,例如调用产品模型 -->
                {dede:arclist row='2' channelid='3'} <!-- 假设产品模型的ID是3 -->
                <div class="product-item">
                    <!-- [field:picname/] 是缩略图 -->
                    <img src="[field:picname/]" alt="[field:title/]">
                    <h3>[field:title/]</h3>
                    <!-- [field:description/] 是简介 -->
                    <p>[field:description function='cn_substr(@me, 100)'/]...</p> <!-- 截取100个字符 -->
                </div>
                {/dede:arclist}
            </div>
        </section>
    </main>
    {dede:include filename="footer.htm"/} <!-- 引入底部公共模板 -->
</body>
</html>

常用标签解释:

  • {dede:global.cfg_webname/}: 获取网站后台设置的网站名称。
  • {dede:include filename='head.htm'/}: 包含另一个模板文件,用于复用头部、底部等公共代码。
  • {dede:arclist ...}: 文章列表标签,最核心的标签之一,用于调用文章列表。
    • row='5': 显示5条记录。
    • titlelen='30': 标题长度限制为30个字符。
    • channelid='3': 调指定模型频道的内容。
  • [field:title/]: 字段标签,在循环内部使用,用于显示当前记录的某个字段,如标题。
  • [field:arcurl/]: 显示当前记录的链接地址。
  • [field:pubdate function="MyDate('Y-m-d',@me)"/]: 对字段进行处理,这里是将发布日期格式化为“年-月-日”。
  • [field:litpic/]: 获取文章的缩略图。

特性 不带数据的模板 (DedeCMS模板) 静态HTML文件
本质 一个包含标签占位符的HTML文件 一个包含的HTML文件
可维护性 ,修改后台数据,前端页面自动更新。 ,需要手动修改每个HTML文件。
使用场景 DedeCMS网站的所有页面(首页、列表页、内容页等)。 网站设计稿、制作静态展示页、作为模板开发的基础。

一个“不带数据的模板”就是DedeCMS的“半成品”。 你先设计好网站的“骨架”(HTML和CSS),然后通过在骨架上“植入”DedeCMS的标签({dede:...}[field:...]),告诉系统从哪里获取“血肉”(数据库内容),最终由DedeCMS引擎将这些“血肉”填充到“骨架”中,生成最终用户看到的完整网页。