织梦DedeCMS模板制作完全指南

织梦模板的本质是将静态的HTML网页与织梦的动态标签相结合,最终通过织梦系统解析,生成动态的网站页面,整个过程可以概括为:HTML搭建骨架 → CSS美化样式 → 织梦标签填充内容 → JS实现交互

织梦dedecms模板制作 65533;
(图片来源网络,侵删)

第一部分:模板的构成与目录结构

在开始制作之前,你需要了解织梦模板的基本构成和存放位置。

模板文件存放目录

织梦默认的模板目录位于:/templets/,为了方便管理,我们通常会在templets下创建一个以你的网站名称或主题名称命名的文件夹,例如/templets/default//templets/mytheme/

核心模板文件

一个完整的网站模板,至少需要以下几个核心文件:

  • index.html: 网站首页模板。
  • article_list.html: 文章列表页模板(新闻列表、产品列表)。
  • article_article.html: 文章内容页模板(新闻详情、产品详情)。
  • index.htm: (非常重要) 这是首页的静态文件,当你通过后台“生成”首页时,织梦会读取index.html模板,生成index.htm文件并发送到网站根目录,用户访问时,直接访问index.htm,速度更快。
  • head.htm: 公共头部文件,通常包含网站的<head>部分(如标题、CSS、JS引入)、Logo、主导航栏等,在首页和其他页面中通过{include file='head.htm' /}来调用。
  • footer.htm: 公共底部文件,通常包含版权信息、友情链接、统计代码等,同样通过{include file='footer.htm' /}调用。

良好的习惯:将公共部分(如头部、底部、侧边栏)拆分成独立的.htm文件,然后在各个页面模板中引用,这样可以大大提高修改效率。

织梦dedecms模板制作 65533;
(图片来源网络,侵删)

第二部分:模板制作核心步骤

准备HTML静态原型

这是模板制作的基础,你可以使用Dreamweaver、VS Code、Sublime Text等代码编辑器,或者使用Bootstrap、Element UI等前端框架来构建一个标准的、响应式的HTML网页。

一个简单的HTML原型示例 (index.html):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">我的织梦网站 - 首页</title>
    <link rel="stylesheet" href="/static/css/style.css">
</head>
<body>
    <!-- 公共头部 -->
    <header>
        <div class="logo">我的织梦网站</div>
        <nav>
            <ul>
                <li><a href="#">首页</a></li>
                <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="slider">
            <!-- 轮播图内容 -->
        </section>
        <section class="news-list">
            <h2>最新资讯</h2>
            <ul>
                <li><a href="#">这里是新闻标题1...</a></li>
                <li><a href="#">这里是新闻标题2...</a></li>
                <li><a href="#">这里是新闻标题3...</a></li>
                <li><a href="#">这里是新闻标题4...</a></li>
            </ul>
        </section>
    </main>
    <!-- 公共底部 -->
    <footer>
        <p>&copy; 2025 我的织梦网站 版权所有</p>
    </footer>
    <script src="/static/js/jquery.min.js"></script>
    <script src="/static/js/main.js"></script>
</body>
</html>

织梦标签的植入

我们将HTML中的静态内容替换为织梦的动态标签。

网站基本信息标签

织梦dedecms模板制作 65533;
(图片来源网络,侵删)

这些标签通常放在head.htm中。

  • : {dede:global.cfg_webname/}
  • 网站描述: {dede:global.cfg_description/}
  • 网站关键词: {dede:global.cfg_keywords/}
  • CSS/JS文件路径: 为了方便,可以在后台设置全局变量,如{dede:global.cfg_cmspath/},然后在模板中使用{dede:global.cfg_cmspath/}/static/css/style.css

修改后的 head.htm 示例:

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">{dede:global.cfg_webname/} - {dede:field.title/}</title>
    <meta name="description" content="{dede:global.cfg_description/}">
    <meta name="keywords" content="{dede:global.cfg_keywords/}">
    <link rel="stylesheet" href="{dede:global.cfg_cmspath/}/static/css/style.css">
</head>

注意:{dede:field.title/}会获取当前页面的标题,首页就是网站首页标题。

标签

现在修改我们的 index.html

  • 调用文章列表: 使用{dede:arclist}标签,这是最常用、最核心的标签之一。
    • typeid: 指定栏目ID,调用指定栏目下的文章,不填则调用所有顶级栏目。
    • row: 调用文章数量。
    • titlelen: 标题长度。
    • infolen: 简介(长度。

修改后的首页 index.html 核心部分:

<!-- 公共头部 -->
<header>
    <div class="logo">{dede:global.cfg_webname/}</div>
    <nav>
        <ul>
            <li><a href="/">首页</a></li>
            <!-- 调用栏目导航 -->
            {dede:channel type='top' row='5'}
            <li><a href="[field:typelink/]">[field:typename/]</a></li>
            {/dede:channel}
        </ul>
    </nav>
</header>
<!-- 主要内容区 -->
<main>
    <section class="slider">
        <!-- 调用首页焦点图 -->
        {dede:arclist row='5' type='image.'}
        <img src="[field:picname/]" alt="[field:title function='html2text(@me)'/]">
        {/dede:arclist}
    </section>
    <section class="news-list">
        <h2>最新资讯</h2>
        <ul>
            <!-- 调用文章列表 -->
            {dede:arclist typeid='1' row='4' titlelen='30'}
            <li>
                <span class="date">[field:pubdate function='strftime("%Y-%m-%d", @me)'/]</span>
                <a href="[field:arcurl/]">[field:title/]</a>
            </li>
            {/dede:arclist}
        </ul>
    </section>
</main>
<!-- 公共底部 -->
<footer>
    <p>&copy; 2025 {dede:global.cfg_webname/} 版权所有</p>
</footer>
  • [field:picname/], [field:title/], [field:arcurl/]arclist 标签内的字段名,分别代表图片、标题和链接。
  • function='strftime("%Y-%m-%d", @me)' 是对日期字段进行格式化处理的函数。

列表页和内容页模板

  • 列表页 (article_list.html):

    • 使用 {dede:list} 标签来循环显示当前栏目下的文章列表。
    • {dede:list pagesize='10'}: pagesize 控制每页显示的文章数。
    • 列表页下方通常需要分页条,使用 {dede:pagelist listsize='4'/}
    <!-- article_list.html -->
    <h1>{dede:field.typename/}</h1>
    <ul>
        {dede:list pagesize='10'}
        <li>
            <span class="date">[field:pubdate function='strftime("%Y-%m-%d", @me)'/]</span>
            <a href="[field:arcurl/]">[field:title/]</a>
        </li>
        {/dede