织梦CMS模板开发需按仿站准备、目标站分析、模板文件对应、标签调用步骤,将静态页套成DedeCMS模板,重点包括后台模板绑定、首页列表页内容页标签替换、导航高亮,稳定交付。
很多开发者在看织梦CMS模板开发视频或自己录屏复盘时,最容易卡在“静态页已经切好,但不知道如何套成DedeCMS模板”,具体表现通常是:标签写进模板不解析、后台选错模板文件、列表页空白、导航高亮不生效,解决这个问题不需要到处翻零散帖子,只要按“仿站准备—目标站分析—模板文件对应—标签调用—常用功能实现”这五个步骤走,就能稳定完成一套织梦CMS模板,下面直接给出可落地的步骤和代码。
仿站准备工作说明
先把环境统一,避免视频里能跑通、自己本地跑不通的情况。
织梦CMS模板开发视频,从仿站准备到标签调用的完整实战
运行环境
DedeCMS V5.7 SP2 对 PHP 版本兼容最好的区间是 PHP 5.3 到 PHP 7.1,如果是本地开发,推荐使用 phpStudy 或宝塔面板,选择 PHP 5.6 或 PHP 7.0,MySQL 使用 5.5/5.6,不要直接上 PHP 7.4 或 PHP 8.0,否则后台会报错或部分函数不兼容。
安装织梦CMS
下载 DedeCMS V5.7 SP2 UTF-8 版本,解压后把 uploads 目录里的文件放到站点根目录,访问 http://你的域名/install 完成安装,安装完成后必须删除 install 目录,并进入后台修改管理员密码。
准备静态模板文件
目标站的 HTML、CSS、JS、图片、字体文件要先整理好,建议目录结构如下:
/static/ /css/ /js/ /images/ /fonts/ /templets/ /default/
静态页面先在本机跑一遍,确定路径、图片、JS 效果都正常,再开始套织梦标签,很多模板问题不是标签写错,而是静态资源路径写死成绝对路径,换到 DedeCMS 目录后全部失效。
工具准备
至少准备以下工具:
- VS Code:编辑模板文件;
- 浏览器开发者工具:查看目标网站结构、CSS 选择器、网络请求;
- 数据库管理工具:如 phpMyAdmin,方便查看表结构和字段;
- 截图或取色工具:提取目标站配色和尺寸。
目标网站分析思路
套织梦模板之前,先不要着急写标签,先把目标网站当成一个动态系统去反推。
确认页面类型
打开目标网站,按 URL 和内容确认有几类页面:
- 首页:通常展示重点栏目和推荐内容;
- 列表页:按栏目聚合显示文章;页:展示单篇文章正文;
- 单页:如公司简介、联系方式;
- 搜索页和标签页:部分站需要制作。
如果目标站有视频模块,还要确认视频是放在文章正文里,还是独立字段,或者是独立模型。
找出公共区域
一个普通企业站或资讯站,至少会有公共头部、导航、底部、侧边栏,用浏览器开发者工具选中页面区域,观察 HTML 结构,找出哪些代码块是每个页面都重复的,这些重复部分应该抽离到 header.htm 和 footer.htm。
找出动态数据块
首页的新闻列表、产品推荐、栏目导航、轮播图,列表页的文章循环、分页,内容页的标题、时间、来源、正文、上一篇下一篇,这些都是动态数据块,需要用织梦标签替代,可以在静态 HTML 里加上注释,
<!-- 首页新闻列表开始 --> <ul class="news-list"> <li><a href="#">新闻标题</a></li> </ul> <!-- 首页新闻列表结束 -->
这样套标签时不会漏项。
规划字段
缩略图、发布时间、来源、点击量、正文、视频地址、SEO 标题、关键字、描述,这些字段要提前规划,织梦默认模型里大部分字段都有,如果没有视频地址字段,需要在后台内容模型里新增自定义字段,video_url。
模板文件对应关系讲解
织梦模板不是随便放一个文件就能生效,它依赖“模板目录 + 后台模板绑定”的机制。
默认模板目录
/templets/default/
默认模板目录下常见文件:
| 文件 | 作用 |
|---|---|
index.htm |
首页模板 |
list_article.htm |
默认文章列表页模板 |
article_article.htm |
默认文章内容页模板 |
index_article.htm |
栏目封面模板 |
header.htm |
公共头部模板 |
footer.htm |
公共底部模板 |
search.htm |
搜索页模板 |
htm |
404 页面模板 |
自定义模板命名规则
实际仿站时不要直接覆盖默认模板,建议复制后改名为:
list_news.htm list_product.htm article_news.htm article_product.htm index_news.htm
命名规则没有强制要求,但最好按“类型_栏目”的格式维护,模板文件必须放在 /templets/你的模板目录/ 下面。
后台绑定位置
进入织梦后台:
核心 -> 栏目管理 -> 修改栏目 -> 常规选项
在栏目设置里可以看到:
- 封面模板;
- 列表模板;模板。
在这里选择对应的自定义模板文件,首页模板一般在后台首页设置里选择,或者直接使用 templets/default/index.htm。
include 引入公共模板
公共头部和底部不是通过后台绑定,而是用 include 标签引入:
{dede:include filename="header.htm"/}
{dede:include filename="footer.htm"/}
只需在 index、list、article 等模板的对应位置加上这两行即可。
织梦标签调用方法
织梦模板开发的核心就是标签替换,模板里以 {dede: 开头的标签会被解析,循环内的字段使用 [field:xxx/]。
首页新闻列表
{dede:arclist typeid='1' row='10' titlelen='40' flag='c' orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:fulltitle/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
常用属性解释:
typeid:栏目 ID,不写则调所有栏目;row:返回条数;len`:标题截取长度;flag:推荐类,c为推荐,h为幻灯,p为图片;orderby:排序方式,pubdate按发布时间倒序。
栏目导航
{dede:channel type='top' row='10' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}
<li><a href='[field:typeurl/]'>[field:typename/]</a></li>
{/dede:channel}
type='top' 表示只调顶级栏目,type='son' 调子栏目,type='self' 调同级栏目。currentstyle 用于当前栏目高亮。
列表页文章循环
{dede:list pagesize='15' titlelen='60'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}
列表页必须使用 {dede:list},不能再用 {dede:arclist},分页使用 {dede:pagelist}。
内容页字段输出
<h1>{dede:field.title/}</h1>
<div class="meta">
发布时间:{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/}
来源:{dede:field.source/}
点击:{dede:field.click/}
</div>
<div class="content">
{dede:field.body/}
</div>
使用 {dede:field.body/},不要使用 {dede:field.content/},织梦默认文章模型正文字段名为 body。
指定栏目信息
{dede:type typeid='1'}
<a href="[field:typeurl/]">[field:typename/]</a>
{/dede:type}
常用于首页某个栏目标题和链接的输出。
首页栏目块
{dede:channelartlist row='6'}
<div class="block">
<h3>{dede:field name='typename'/}</h3>
<ul>
{dede:arclist row='5' titlelen='40'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
</div>
{/dede:channelartlist}
channelartlist 适合首页按栏目分块调用,如果复杂条件下的嵌套调用容易冲突,可以直接根据栏目 ID 写多组 {dede:arclist}。
常用功能实现技巧
导航高亮
顶部导航高亮推荐使用 channel 标签的 currentstyle 属性,列表页可以正常高亮,但内容页的当前栏目识别有时不生效,此时可以在内容页模板里获取当前栏目 ID:
{dede:field.typeid/}
然后通过 PHP 或 JS 判断为对应导航项添加 active 类,简单做法是:
var typeId = "{dede:field.typeid/}";
document.querySelectorAll('.nav li').forEach(function(el){
if(el.dataset.id == typeId){
el.classList.add('active');
}
});
面包屑导航
面包屑直接使用织梦的 position 字段:
<div class="breadcrumb">
{dede:field name='position'/}
</div>
页都可以调用,会自动输出类似“首页 > 新闻中心 > 正文”。
列表页分页
分页标签建议统一写成:
{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}
如果分页样式不好看,可以通过 CSS 调整分页外层 div 的子元素,不建议直接修改分页 PHP 文件。
内容页分页
如果文章很长需要分页,后台内容编辑时可以插入分页符,或者在系统设置里开启自动分页,模板中用:
{dede:pagebreak/}
页分页导航。
视频字段调用
如果仿站对象包含视频内容,建议在文章模型新增自定义字段,video_url页模板调用:
<video src="{dede:field name='video_url'/}" controls preload="metadata"></video>
列表页如果需要视频缩略图,继续使用默认缩略图字段 [field:litpic/],点击后进入内容页播放,不要直接在列表页嵌入 video 标签,否则列表页会非常卡。
搜索框
搜索表单不要写死静态地址,必须指向织梦搜索入口:
<form action="/plus/search.php" method="get"> <input type="text" name="keyword" placeholder="请输入关键词"> <button type="submit">搜索</button> </form>
搜索页模板文件为 search.htm,可以在后台选择对应模板。
安全设置
套完模板后必须做基础安全处理:
- 删除
install目录; - 修改
dede后台目录名; - 在服务器上禁止
data目录执行 PHP; - 后台管理员密码避免设为弱口令;
- 定期备份数据库。
织梦CMS模板开发视频里很多操作看似简单,但真正决定效率的是这些细节,把准备、分析、模板对应、标签调用和常用功能落实到位,仿站才会从“能打开”变成“能交付”。


