织梦CMS前台模板修改全攻略
织梦CMS的模板系统非常灵活,其核心思想是 “动静分离”,这意味着网站的页面内容(数据)和页面样式(HTML/CSS/JS)是分开存储的,修改模板,就是修改这个“样式”部分,让它呈现出你想要的效果。
第一部分:核心概念与准备(新手必读)
在动手修改之前,必须先理解几个核心概念,这会让你事半功倍。
模板文件存放位置
织梦的前台模板文件默认存放在以下目录:
/templets/
├── default/ # 默认模板文件夹
│ ├── index.html # 首页模板
│ ├── list_*.html # 列表页模板 (list_1.html, list_2.html ...)
│ ├── article_*.html # 文章内容页模板 (article_1.html, article_2.html ...)
│ ├── search.html # 搜索页模板
│ └── ... # 其他页面模板
└── your_template/ # 你自己创建的模板文件夹
├── index.html
└── ...
操作建议:
- 永远不要直接修改
default文件夹!这是官方默认模板,升级时会被覆盖。 - 创建一个属于你自己的文件夹(如
mytheme),并将default文件夹中的相关模板文件复制到你的文件夹下进行修改。 - 在织梦后台 -> 系统 -> 系统基本参数 -> 核心设置 中,修改
默认模板目录为你的新文件夹名(如your_template)。
模板引擎:DedeTag
织梦使用自己的模板引擎,通过 {dede:标签名 属性='值'} 这样的语法来调用数据。
- 可以理解为函数或指令,用于从数据库中获取数据并展示在页面上。
- 属性:为标签提供参数,控制获取数据的方式(如数量、排序、分类等)。
- 底层模板:一些列表类标签(如
{dede:arclist},{dede:loop})支持使用{dede:field}等标签来循环输出每一个条目的具体信息,这被称为“底层模板”。
常用标签速查表
| 标签类别 | 标签名 | 用途 | 示例 |
|---|---|---|---|
| 全局/公共 | {dede:global.name/} |
调用网站名称 | {dede:global.cfg_webname/} |
{dede:global.cfg_keywords/} |
调用网站关键词 | ||
{dede:global.cfg_description/} |
调用网站描述 | ||
| 首页 | {dede:arclist} |
调用文章列表(首页常用) | {dede:arclist titlelen='30' row='10'} |
{dede:channel} |
调用栏目列表 | {dede:channel type='top' row='8'} |
|
| 列表页 | {dede:list} |
调用当前栏目的文章列表 | {dede:list pagesize='10'} |
{dede:pagelist} |
调用分页页码 | {dede:pagelist listsize='4'/} |
|
| 文章页 | {dede:field.title/} |
调用文章标题 | |
{dede:field.body/} |
调用文章正文内容 | ||
{dede:field.pubdate function='strftime("%Y-%m-%d",@me)'/} |
调用发布时间(格式化) | ||
{dede:field.typename/} |
调用文章所属栏目名 | ||
| 评论 | {dede:feedback} |
调用评论列表 | {dede:feedback row='5' titlelen='24'} |
第二部分:基础修改实战
这是最常见的需求,教你如何修改网站的各个部分。
修改网站标题、Logo和底部信息
- 位置:后台操作,无需改模板。
- 路径:后台 -> 系统 -> 系统基本参数。
- 网站名称:
{dede:global.cfg_webname/} - 网站Logo:上传Logo图片,模板中使用
<img src='{dede:global.cfg_cmsurl/}/images/logo.png' />(路径根据你实际存放位置调整)。 - 版权信息:后台 -> 系统 -> 系统基本参数 -> 核心设置 ->
Power by DedeCMS,可以修改这里的值。
- 网站名称:
修改首页内容
- 操作:直接编辑
/templets/your_template/index.html文件。 - 常见修改:
- 轮播图/焦点图:通常使用
{dede:arclist}标签调用指定栏目或推荐文章,配合JS/CSS实现。<!-- HTML结构 --> <div class="slider"> {dede:arclist flag='h' row='5'} <div class="slide-item"> <a href="[field:arcurl/]"> <img src="[field:litpic/]" alt="[field:title/]"> <span class="title">[field:title/]</span> </a> </div> {/dede:arclist} </div> - 调用指定栏目文章:使用
{dede:arclist}并指定typeid属性。<!-- 调用ID为1的栏目的最新10篇文章 --> {dede:arclist typeid='1' row='10' titlelen='20'} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclist} - 友情链接:使用
{dede:flink}标签。{dede:flink type='text' row='24' titlelen='20'} <a href="[field:url/]" target="_blank">[field:name/]</a> {/dede:flink}
- 轮播图/焦点图:通常使用
修改列表页(如新闻列表)
-
操作:编辑
/templets/your_template/list_*.html文件( 对应栏目ID)。 -
核心结构:
<!-- 文章列表开始 --> {dede:list pagesize='10'} <div class="list-item"> <h2><a href="[field:arcurl/]">[field:title/]</a></h2> <div class="info"> <span>发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> <span>作者:[field:writer/]</span> <span>点击:[field:click/]</span> </div> <p class="intro">[field:description function='cn_substr(@me, 100)'/]...</p> </div> {/dede:list} <!-- 文章列表结束 --> <!-- 分页条开始 --> <div class="page-nav"> {dede:pagelist listitem='info,index,end,pre,next,pageno' listsize='4'/} </div> <!-- 分页条结束 -->
修改文章内容页
-
操作:编辑
/templets/your_template/article_*.html文件( 对应栏目ID)。 -
核心结构:
<h1 class="title">{dede:field.title/}</h1> <div class="info"> <span>发布时间:{dede:field.pubdate function="MyDate('Y-m-d',@me)"/}</span> <span>来源:{dede:field.source/}</span> <span>作者:{dede:field.writer/}</span> <span>点击:{dede:field.click/}</span> </div> <div class="content"> {dede:field.body/} <!-- 这里是文章正文 --> </div> <!-- 上一篇/下一篇 --> <div class="nexus"> <p>上一篇:{dede:prenext get='pre'/}</p> <p>下一篇:{dede:prenext get='next'/}</p> </div> <!-- 评论表单和列表 --> {dede:include filename='comment.htm'/} <!-- 通常会引用一个公共的评论模板 -->
第三部分:进阶技巧与常见问题
当你熟悉了基础修改后,可能会遇到更复杂的需求。
CSS和JS文件路径问题
这是模板修改中最常见的问题,为了让模板在任意目录下都能正确加载资源,请使用以下固定路径:
-
CSS文件路径:
<link rel="stylesheet" href="{dede:global.cfg_cmsurl/}/templets/your_template/css/style.css"> -
JS文件路径:
<script src="{dede:global.cfg_cmsurl/}/templets/your_template/js/jquery.min.js"></script> -
图片路径:
<!-- 如果图片是上传的,直接使用[field:litpic] --> <img src="[field:litpic/]" alt="..."> <!-- 如果是模板自带的图片,使用固定路径 --> <img src="{dede:global.cfg_cmsurl/}/templets/your_template/images/logo.png" alt="...">
{dede:global.cfg_cmsurl/} 会自动解析为你网站的根目录,确保路径正确。
如何调用指定栏目的子栏目?
使用 {dede:channel} 标签,并设置 typeid='父栏目ID' 和 reid='父栏目ID'。
{dede:channel typeid='2' reid='2' row='10'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
这会调用ID为2的栏目下的所有子栏目。
如何修改文章摘要(description)长度?
默认情况下,文章摘要由 description 字段决定,如果该字段为空,则截取 body 的前200个字符。
- 方法一(推荐):在发布文章时,手动填写“字段。
- 方法二(代码修改):修改
include/arc.archives.class.php文件中的GetIntro()方法,可以修改默认截取长度。(此方法需要修改核心文件,升级后会被覆盖,不推荐新手使用)
模板修改后,前台页面没有更新?
这是缓存机制导致的,请按以下顺序检查:
- 清除浏览器缓存:按
Ctrl + F5强制刷新。 - 清除织梦缓存:登录后台,点击右上角的 “生成” -> “一键更新网站 -> 更新HTML -> 更新所有栏目 和 更新首页,这个过程会重新生成所有静态页面。
- 检查模板语法:确保所有
{dede:}标签都正确闭合,没有拼写错误,错误的标签会导致生成失败。
如何制作自定义单页(如“关于我们”、“联系我们”)?
- 在后台添加栏目:进入“频道模型” -> “栏目管理”,添加一个新栏目。
- 选择栏目类型:在添加栏目的第二步,选择“单页页面模型”。
- :进入该栏目的“维护”,在“内容模型” -> “添加文档” 中填写页面内容。
- 修改模板:创建一个新模板文件,如
about.html,然后在后台“模板管理”中,为这个单页栏目指定使用这个模板。 - 在首页调用:使用
{dede:channel}标签调用它,<a href="[field:typelink/]">关于我们</a>。
第四部分:资源与学习
- 官方文档:虽然织梦官方文档有时不够完善,但仍然是第一手资料,可以查阅标签列表和模板制作手册。
- 模板市场:各大织梦模板网站提供了大量成品模板,你可以下载后研究其结构和标签用法,这是学习的捷径。
- 社区论坛:如“织梦之家”等社区,有大量教程和问题解答,遇到难题时可以去搜索。
- 浏览器开发者工具:这是你最好的朋友!使用F12(或右键“检查”)可以实时查看网页的HTML结构、CSS样式和网络请求,帮助你快速定位问题。
织梦模板修改的精髓在于 “理解标签 + 熟悉HTML/CSS + 善用工具”。
- 从复制开始:复制
default模板到自己的文件夹,不要动原版。 - 先看后改:用浏览器开发者工具分析现有页面结构,再动手修改模板。
- 勤于测试:每次修改后,务必生成和刷新,及时发现问题。
- 多看多学:研究别人的优秀模板,是提升最快的方式。
希望这份详尽的教程能帮助你顺利掌握织梦前台模板的修改技能!
