织梦DedeCMS 5.7 模板修改全攻略

织梦(DedeCMS)的核心思想是“内容与表现分离”,这意味着网站的存储在数据库中,而外观(样式)布局(结构)则由模板文件控制,修改模板,本质上就是修改这些文件来改变网站的显示效果。

织梦5.7模板修改教程
(图片来源网络,侵删)

第一部分:基础知识准备

在开始修改之前,你需要了解几个核心概念和文件结构。

什么是模板?

模板是织梦生成HTML页面的“图纸”,它是一个HTML文件,但里面嵌入了织梦特有的模板标签(标签),这些标签就像一个个指令,告诉织梦在生成页面时,从哪里获取数据并如何显示。

模板文件结构

织梦的模板文件都存放在 /templets/ 目录下,默认情况下,里面会有一个 default/ 文件夹,这是织梦默认的模板。

/templets/
├── default/          # 默认模板文件夹
│   ├── index.html    # 首页模板
│   ├── list_article.htm  # 文章列表页模板
│   ├── article_article.htm # 文章内容页模板
│   ├── search.htm    # 搜索页模板
│   ├── head.htm      # 公共头部文件
│   ├── foot.htm      # 公共底部文件
│   └── ...           # 其他页面模板
└── your_template/    # 你自己创建的模板文件夹(强烈推荐)
    └── ...           # 把 default 文件夹复制一份,重命名,然后在这里修改

最佳实践: 永远不要直接修改 default 文件夹里的模板! 因为以后织梦升级时,这些修改会被覆盖,正确的做法是:

织梦5.7模板修改教程
(图片来源网络,侵删)
  1. 进入织梦后台 -> 系统 -> 系统基本参数 -> 核心设置
  2. 找到 “默认模板目录”,将其修改为你自己创建的文件夹名(如 your_template)。
  3. /templets/default/ 整个文件夹复制一份,并重命名为 your_template
  4. 之后所有的模板修改,都在 your_template 文件夹里进行。

第二部分:核心模板标签

这是修改模板的“语法”,必须掌握,常用标签分为几大类:

全局标签

可以在任何模板文件中使用。

  • {dede:global.cfg_webname/}:显示网站名称。
  • {dede:global.cfg_weburl/}:显示网站网址。
  • {dede:global.cfg_keywords/}:显示网站关键词。
  • {dede:global.cfg_description/}:显示网站描述。

文章列表标签

用于文章列表页、首页文章推荐等。

  • {dede:arclist}:文章列表循环标签,最常用。

    织梦5.7模板修改教程
    (图片来源网络,侵删)
    • typeid: 指定栏目ID,只显示该栏目下的文章。
    • row: 显示文章数量。
    • titlelen: 标题长度。
    • infolen: 内容摘要长度。
    • imgwidth: 缩略图宽度。
    • imgheight: 缩略图高度。
    • orderby: 排序方式,如 pubdate (发布时间), click (点击量), id (ID)。
    • channelid: 频道ID,1代表文章。

    示例: 在首页调用5篇最新文章,标题长度30字。

    {dede:arclist row='5' titlelen='30'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:arclist}
  • [field:xxx/]:这是在 {dede:arclist} 循环内部使用的字段标签。

    • [field:title/]
    • [field:arcurl/]:文章链接。
    • [field:pubdate/]:发布时间。
    • [field:description/]
    • [field:litpic/]:文章缩略图。
    • [field:click/]:文章点击量。

页标签

用于 article_article.htm

  • {dede:field}:获取当前文章的单个字段。
    • {dede:field.title/}
    • {dede:field.pubdate/}:发布时间。
    • {dede:field.source/}:文章来源。
    • {dede:field.writer/}:文章作者。
    • {dede:field.body/}:文章正文内容。
    • {dede:field.keywords/}:文章关键词。
    • {dede:field.description/}:文章描述。

栏目标签

用于显示栏目信息。

  • {dede:channel}:栏目列表循环标签。

    • type='top': 只显示顶级栏目。
    • row: 显示栏目数量。

    示例: 显示所有顶级栏目。

    <nav>
        {dede:channel type='top'}
        <li><a href="[field:typelink/]">[field:typename/]</a></li>
        {/dede:channel}
    </nav>
  • [field:typename/]:栏目名称。

  • [field:typelink/]:栏目链接。

其他常用标签

  • {dede:include filename='head.htm' /}:包含(引入)一个公共文件,用于制作网站的头部、底部、侧边栏等。
  • {dede:pagelist listsize='4' listitem='index,pre,next,end,pageno'/}:分页条。

第三部分:实战修改教程

教程1:修改网站Logo

  1. 准备Logo图片:将你的Logo图片(如 logo.png)上传到网站目录的 /images/ 文件夹下。
  2. 找到模板文件:打开 /templets/your_template/ 文件夹下的 head.htm 文件。
  3. 定位代码:在 head.htm 中找到Logo的 <img> 标签,通常长这样:
    <a href="{dede:global.cfg_cmsurl/}/"><img src="/templets/default/images/logo.png" width="260" height="60" alt="{dede:global.cfg_webname/}" /></a>
  4. 修改路径:将 src 属性中的路径修改为你自己上传的Logo路径:
    <a href="{dede:global.cfg_cmsurl/}/"><img src="/images/logo.png" width="260" height="60" alt="{dede:global.cfg_webname/}" /></a>
  5. 保存并刷新:保存文件,然后刷新网站前台,就能看到新的Logo了。

教程2:修改首页文章列表的样式

假设你想要把首页的文章列表从简单的 <li> 变成带缩略图和摘要的卡片式布局。

  1. 找到首页模板:打开 /templets/your_template/index.html 文件。

  2. 找到调用列表的代码:找到 {dede:arclist} 标签部分。

  3. 修改HTML结构:将原来的简单 <li> 结构替换成更复杂的卡片结构。

    <!-- 修改前 -->
    <ul>
        {dede:arclist row='8'}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
        {/dede:arclist}
    </ul>
    <!-- 修改后 -->
    <div class="article-list">
        {dede:arclist row='8' imgwidth='200' imgheight='150' titlelen='40' infolen='100'}
        <div class="article-item">
            <a href="[field:arcurl/]">
                <img src="[field:litpic/]" alt="[field:title/]" />
            </a>
            <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
            <p class="summary">[field:description/]</p>
            <p class="info">[field:pubdate function="MyDate('Y-m-d',@me)"] / [field:click/] 次阅读</p>
        </div>
        {/dede:arclist}
    </div>
  4. 添加CSS样式:为了让卡片好看,你需要在模板的 <head> 部分引入CSS文件,或者在 <style> 标签里写样式,在 head.htm 中找到引入CSS的地方,添加一个新的CSS文件路径,或者在 <style> 标签里添加以下代码:

    .article-list { display: flex; flex-wrap: wrap; gap: 20px; }
    .article-item { border: 1px solid #eee; padding: 10px; width: calc(25% - 20px); box-sizing: border-box; }
    .article-item img { width: 100%; height: auto; }
    .article-item h3 { font-size: 16px; margin: 10px 0; }
    .article-item .summary { color: #666; font-size: 14px; }
    .article-item .info { color: #999; font-size: 12px; }
  5. 保存并刷新:保存所有文件,刷新首页,新的列表样式就出现了。

教程3:调用指定栏目的文章

假设你想在首页的某个位置,专门调用“产品介绍”这个栏目的文章。

  1. 获取栏目ID:进入后台,【栏目】->【所有栏目】,找到“产品介绍”栏目,记下它的ID(比如是 5)。
  2. 在首页模板中添加代码:在 index.html 的你想要显示的位置,添加如下代码:
    <h2>产品介绍</h2>
    <ul>
        {dede:arclist typeid='5' row='5' titlelen='30'}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
        {/dede:arclist}
    </ul>

    这里 typeid='5' 就是指定了只调用ID为5的栏目下的文章。


第四部分:高级技巧

模板继承(模板嵌套)

很多页面都有相同的部分,如头部、导航、底部,如果每个页面都写一遍,会很麻烦且难以维护,这时就需要模板继承。

  • 创建公共文件:将重复的代码块(如头部、底部)分别放到 head.htmfoot.htm 中。

  • 在子模板中引入:在其他页面模板(如 index.html, list_article.htm)的开头和结尾,使用 {dede:include} 标签引入。

    <!-- index.html -->
    {dede:include filename='head.htm'/}
    <!-- 这里是首页独有的内容 -->
    <h1>欢迎来到首页</h1>
    {dede:arclist row='10'}...{/dede:arclist}
    {dede:include filename='foot.htm'/}

条件判断 if

有时需要根据不同情况显示不同内容,首页显示A,列表页显示B”。

  • 语法{dede:if condition='表达式'}...内容...{/dede:if}{dede:if}...{else}...{/dede:if}
  • 示例:只在首页显示一个Banner。
    {dede:if $ismodule=='index'}
    <div class="banner">
        <!-- 你的Banner代码 -->
    </div>
    {/dede:if}

    常用的系统变量有:$ismodule (判断是否为首页模块), $typeid (当前栏目ID)。

自定义函数

织梦的模板标签支持使用PHP函数来格式化输出,非常强大。

  • 日期格式化[field:pubdate function="MyDate('Y-m-d H:i:s',@me)"/]
    • @me 代表当前字段的原始值。
    • 'Y-m-d H:i:s' 是你想要的日期格式。
  • 截取文字[field:title function="cn_substr(@me, 20)"/] 截取标题前20个字符。
  • 去除HTML标签[field:description function="htmlspecialchars(cn_substr(@me, 100))"/] 先截取100字符,再转义HTML,用于安全显示摘要。

第五部分:调试与排错

修改模板时,最常见的问题就是页面显示不正常。

检查标签语法

  • 标签是否闭合{dede:arclist} 必须有对应的 {/dede:arclist}
  • 引号是否匹配typeid='5' 中的引号必须是成对的。
  • 拼写错误titlelen 不要写成 titlen

清除缓存

织梦有强大的缓存机制,很多时候你修改了模板,但前台没变化,就是因为缓存了。

  • 后台手动清除:进入后台 -> 系统 -> 系统设置 -> 清除全部缓存
  • 关闭缓存:在后台 -> 系统 -> 系统基本参数 -> 性能选项 中,可以设置关闭模板缓存(不推荐长期关闭,会影响性能)。

使用浏览器开发者工具

这是最强大的调试工具。

  • F12 打开开发者工具。
  • 查看源代码:确认生成的HTML是否是你想要的,如果标签被原样输出(如 {dede:field.title/}),说明标签没有被解析,通常是语法错误或缓存问题。
  • 使用“检查”功能:点击页面上的元素,可以实时看到它的HTML结构和CSS样式,方便你定位样式问题并进行修改。

织梦模板修改是一个“理论 + 实践”的过程。

  1. 理论:理解模板文件夹结构、掌握核心模板标签的用法。
  2. 实践:从修改Logo、列表等简单部分开始,逐步尝试复杂的布局和调用。
  3. 善用工具:浏览器开发者工具是你的好朋友,多利用它来调试。
  4. 备份!备份!备份! 在修改任何文件之前,务必备份原始模板,以防出错无法恢复。

希望这份详细的教程能帮助你顺利掌握织梦5.7的模板修改技能!祝你建站愉快!