Dedecms 手机模板开发完整教程
Dedecms 5.7 及更高版本内置了强大的移动端适配功能,其核心是 模板自动识别 和 {dede:global.name/} 标签,本教程将分为以下几个部分:

- 核心原理:DedeCMS 如何实现移动端适配?
- 开发环境准备
- 实战步骤一:创建并启用移动端模板
- 实战步骤二:开发移动端首页模板
- 实战步骤三:开发列表页和内容页模板
- 实战步骤四:实现栏目和内容的自动跳转
- 进阶技巧与常见问题
核心原理:DedeCMS 如何实现移动端适配?
理解了原理,后续操作就会非常清晰,DedeCMS 的移动端适配主要有两个关键点:
-
模板自动识别机制:
- 当用户通过手机访问网站时,DedeCMS 会自动检测用户代理。
- 如果识别到是移动设备,系统会自动在
/templets/目录下寻找名为default的文件夹(或你指定的默认移动端模板文件夹)。 - 它会优先加载
default文件夹下的模板文件,而不是 PC 端的模板文件。 - PC 端首页是
/templets/default/index.htm,那么移动端首页就应该放在/templets/default/m/index.htm。
-
全局变量标签
{dede:global.name/}:- 这是实现 一套代码,两套风格 的关键,你可以在 PC 端的模板文件中,使用这个标签来调用移动端模板的入口文件。
- 当用户在 PC 端浏览时,这个标签会显示一个“手机版”的链接,点击后跳转到移动端首页。
- 当用户在移动端浏览时,这个标签会显示一个“电脑版”的链接,方便用户切换回 PC 端。
DedeCMS 的移动端开发,本质上就是创建一套新的、独立的模板文件夹(如 m/),并在这个文件夹里复制和修改 PC 端的模板文件,使其适合移动端显示。

开发环境准备
- 本地服务器环境:推荐使用
phpStudy、XAMPP或WampServer等集成环境,用于在本地进行开发和测试。 - Dedecms 程序:下载并安装好 Dedecms 程序到本地服务器。
- 代码编辑器:如 VS Code、Sublime Text、Dreamweaver 等,用于编写和修改模板文件。
- FTP 工具:如 FileZilla,用于将本地开发好的文件上传到服务器。
实战步骤一:创建并启用移动端模板
这是最基础也是最关键的一步。
-
找到模板目录: 登录你的 Dedecms 后台,进入 【系统】-> 【系统基本参数】-> 【核心设置】,查看
模板目录路径的值,通常是/templets/。 -
创建移动端模板文件夹: 使用 FTP 工具或文件管理器,进入
/templets/目录。 复制default文件夹(这是你的 PC 端模板文件夹),并将其重命名为m。强烈建议复制,而不是直接修改原文件夹,这样可以保留一份完整的 PC 端模板作为备份。 -
后台启用移动端模板:
(图片来源网络,侵删)- 登录 Dedecms 后台。
- 进入 【系统】-> 【系统基本参数】-> 【核心设置】。
- 找到
mobile相关的选项,将手机版模板目录设置为m。 - 保存设置。
你的移动端模板文件夹已经准备就绪,DedeCMS 会自动识别并使用它。
实战步骤二:开发移动端首页模板
移动端首页的文件路径是:/templets/m/index.htm。
-
复制 PC 端首页: 将
/templets/default/index.htm复制到/templets/m/目录下,并命名为index.htm。 -
修改首页模板: 用代码编辑器打开
/templets/m/index.htm文件,进行以下修改:-
修改
head部分的 viewport: 这是移动端网页适配的核心,用于控制页面在移动设备上的缩放和布局。<head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>{dede:global.cfg_webname/}</title> <!-- 其他 meta 标签和 CSS/JS 引入 --> </head> -
简化 HTML 结构: 移动端讲究简洁、快速,删除 PC 端首页中不必要的复杂布局、广告位、侧边栏等,只保留核心内容。
-
优化 CSS 样式:
- 使用响应式单位:将
px单位尽量替换为rem或em,或者使用百分比布局。 - 引入移动端 CSS 框架(可选):可以引入像
Bootstrap或Amaze UI这样的框架,它们提供了现成的移动端组件,能极大提高开发效率。 - 重置样式:在 CSS 文件开头加入一些重置样式,消除不同浏览器的默认样式差异。
- 使用响应式单位:将
-
优化 JavaScript: 移动端对 JS 的性能要求更高,尽量减少不必要的 JS,或者将 JS 放在页面底部加载,对于触摸事件,优先使用
touchstart/touchmove/touchend,而不是click。 -
添加切换按钮: 在页面的头部或底部,加入切换 PC/移动端的链接,这里就用到了我们前面提到的
{dede:global.name/}<!-- 在 body 标签内部合适的位置,比如头部 --> <div class="switch-view"> <a href="{dede:global.name/}">电脑版</a> </div>
-
实战步骤三:开发列表页和内容页模板
移动端的列表页和内容页也需要单独制作。
-
列表页模板:
- 文件路径:
/templets/m/list_栏目ID.htm或/templets/m/list_default.htm。 - 制作方法:
- 复制 PC 端的列表页模板(如
/templets/default/list_栏目ID.htm)到/templets/m/目录。 - 打开复制的文件,进行和首页类似的修改:简化结构、优化 CSS、添加
viewport和切换按钮。 - DedecCMS 会自动根据栏目ID调用对应的移动端列表页模板。
- 复制 PC 端的列表页模板(如
- 文件路径:
-
内容页模板:
- 文件路径:
/templets/m/article_栏目ID.htm或/templets/m/article_default.htm。 - 制作方法:
- 复制 PC 端的内容页模板(如
/templets/default/article_栏目ID.htm)到/templets/m/目录。 - 打开复制的文件,进行修改:
- 优化文章内容显示
{dede:field.body/}可能会包含很多 PC 端的样式(如table、font等),这些在移动端显示会很乱,你可能需要写一些 CSS 来覆盖这些样式,或者通过修改include/arc.archives.class.php文件来过滤掉不兼容的标签(此方法较复杂,不推荐新手尝试)。 - 简化文章信息:只保留标题、发布时间、来源、点击量等核心信息。
- 优化评论和分享功能:确保评论框和分享按钮在移动端易于点击。
- 同样,别忘了添加
viewport和切换按钮。
- 优化文章内容显示
- 复制 PC 端的内容页模板(如
- 文件路径:
实战步骤四:实现栏目和内容的自动跳转
这是提升用户体验的关键一步,当用户通过手机访问一个 PC 端的栏目或文章链接时,应该自动跳转到对应的移动端页面。
-
修改
/include/arc.archives.class.php(文章页跳转):- 用编辑器打开这个文件。
- 找到
function GetBody函数(大约在 150 行左右)。 - 在函数内,
$body = preg_replace("/<([^>]+)style=\"(.+?)\"([^>]*)>/i", '<\\1\\3>', $body);这行代码的后面,添加以下代码:// 自动添加移动端适配代码 if(!is_mobile()){ $body = '<!-- <div class="pc-notice">您正在访问电脑版,<a href="'.$this->Fields['mobileurl'].'">点击访问手机版</a>获得更好体验!</div> -->' . $body; } - 注意:上面的代码是可选的,它会提示用户,更直接的方式是直接跳转,但这可能会影响 SEO,通常推荐使用下面更优雅的方式。
-
修改
/include/arc.listview.class.php(列表页跳转):- 用编辑器打开这个文件。
- 找到
function GetList函数。 - 在函数内,找到生成列表链接的地方(通常有
$this->Fields['arcurl']或类似的变量)。 - 在生成链接之前,判断是否为移动端,如果是,则替换链接为移动端链接,这个修改相对复杂,需要对 PHP 有一定了解。
-
推荐:使用 JS 进行跳转(更简单、更常用): 这是一种更简单且不会影响后端 PHP 代码的方法,我们可以在所有 PC 端模板的
head部分加入一段 JS 代码。- 在 PC 端模板的
head中加入以下代码:<script> function browserRedirect() { var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"; var bIsMidp = sUserAgent.match(/midp/i) == "midp"; var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"; var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb"; var bIsAndroid = sUserAgent.match(/android/i) == "android"; var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce"; var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile"; if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) { // 如果是移动端,并且当前网址不是移动端网址,则跳转 if (window.location.href.indexOf("m.") < 0) { // 这里 /m/ 是你的移动端目录,请根据实际情况修改 window.location.href = window.location.href.replace('www.', 'm.').replace('index.html', ''); // 或者直接跳转到首页 // window.location.href = "{dede:global.cfg_mobileurl/}/"; } } } browserRedirect(); </script> - 说明:
- 这段 JS 会检测设备类型。
- 如果是移动设备,并且当前 URL 不包含
m.(或其他你设定的移动端标识),就会进行跳转。 - 你需要根据你的域名结构调整
window.location.href.replace('www.', 'm.')这部分代码。 {dede:global.cfg_mobileurl/}是系统调用你在后台设置的手机版网站根网址,是一个更可靠的方式。
- 在 PC 端模板的
进阶技巧与常见问题
-
如何共用 CSS 和 JS 文件? 为了减少代码冗余,你可以让 PC 端和移动端共用一套 CSS 和 JS 文件。
-
将 CSS 和 JS 文件放在一个公共目录,如
/static/。 -
在 PC 端和移动端的模板中,都通过绝对路径引用它们,
<link href="{dede:global.cfg_cmsurl/}/static/css/common.css" rel="stylesheet"> <script src="{dede:global.cfg_cmsurl/}/static/js/jquery.min.js"></script> -
然后通过 CSS 的媒体查询
@media来为不同设备编写不同的样式。/* 公共样式 */ .header { background: #333; } /* 移动端特有样式 */ @media screen and (max-width: 768px) { .header { background: #f00; } /* 手机上头部变红色 */ } /* PC 端特有样式 */ @media screen and (min-width: 769px) { .header { background: #00f; } /* 电脑上头部变蓝色 */ }
-
-
常见问题:为什么修改了模板没效果?
- 缓存问题:DedeCMS 和浏览器都有缓存,清空浏览器缓存,或者在后台 【生成】-> 【更新主页HTML】** 一下。
- 路径错误:检查模板中的所有图片、CSS、JS 路径是否使用了
{dede:global.cfg_cmsurl/}或{dede:global.cfg_templets_dir/}等全局变量,确保路径正确。 - 文件名错误:确认移动端模板文件名和位置是否正确(如
m/index.htm)。 - 权限问题:确保
/templets/m/目录及其内部文件有正确的读写权限。
-
如何使用更现代的模板技术? Dedecms 的模板引擎相对传统,如果你想使用 Vue.js 或 React 等现代前端框架,可以将它们作为“单页应用”嵌入到 Dedecms 的内容页中,由 Dedecms 负责提供数据和路由,前端框架负责复杂的交互和渲染。
