DedeCMS 的移动端适配方案主要有两种:

- 自动识别并切换模板(推荐):这是最主流、最灵活的方式,网站会自动检测访客的设备是PC还是手机,然后调用相应的模板来展示页面。
- 独立域名/子域名:为移动端创建一个单独的站点(如
m.yourdomain.com),完全独立于PC端,拥有自己的一套模板和内容。
下面我们重点讲解第一种方案,因为它更易于维护和内容同步。
核心原理:自动识别与模板切换
DedeCMS 实现移动端适配的核心机制是:
- 全局变量:在核心文件中定义了一个全局变量
$_cfg['mobile'],用于存储当前是否为移动端访问的状态。 - 自动检测:系统会通过
dedesql.class.php或其他机制,检查HTTP_USER_AGENT(用户代理字符串),判断用户使用的是否是手机、平板等移动设备。 - 模板目录:在模板目录
/templets/下,建立一个专门的移动端模板文件夹,通常命名为mobile/。 - 文件命名规则:PC端的模板文件(如
index.htm)和移动端的模板文件(如index_m.htm)保持主文件名一致,只是后缀不同。 - 模板调用:在系统核心文件中,会根据
$_cfg['mobile']的值,动态决定是加载/templets/default/下的PC模板,还是加载/templets/mobile/下的移动模板。
详细设置步骤
步骤 1:开启移动端支持
- 登录你的 DedeCMS 后台。
- 进入 “系统” -> “系统基本参数”。
- 在左侧菜单中找到 “核心设置”。
- 找到 “是否开启手机端模板” 选项,将其值设置为 “是”。
- 保存设置。
步骤 2:创建移动端模板目录
在你的网站模板目录下(通常是 /templets/),创建一个新的文件夹,命名为 mobile。
你的网站根目录/
└── /templets/
├── /default/ (PC端模板)
└── /mobile/ (移动端模板,新建)
步骤 3:制作或复制移动端模板文件
这是最关键的一步,你有两种方式来获取移动端模板:

复制PC端模板并修改(适合快速改造)
-
将
/templets/default/目录下的一个PC端模板文件(index.htm)复制一份。 -
将复制出的文件重命名,在主文件名后加上
_m。index.htm复制后重命名为index_m.htm。 -
将这个
index_m.htm文件上传到/templets/mobile/目录下。
(图片来源网络,侵删) -
重要:用代码编辑器打开
/templets/mobile/index_m.htm,将文件最顶部的<!DOCTYPE html>标签修改为移动端适配的声明,并设置视口。<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $cfg_soft_lang; ?>" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><?php echo $cfg_webname; ?>_<?php echo $cfg_subtitle; ?></title> <!-- 其他 meta 标签和 CSS/JS 引入 --> </head> <body> <!-- 在这里修改HTML结构,使其更适合移动端浏览 --> </body> </html>
viewport标签是移动端适配的灵魂,它告诉浏览器如何控制页面的尺寸和缩放。
使用现成的移动端模板(推荐)
你可以从网上下载专门为 DedeCMS 制作的移动端模板,这些模板通常已经包含了完整的 mobile 文件夹和所有 _m 后缀的文件,你只需要将整个 mobile 文件夹解压到你的 /templets/ 目录下即可。
步骤 4:修改核心文件(如果自动切换不生效)
由于主题修改或版本问题,自动切换可能不会生效,这时需要手动修改一个核心文件。
-
打开
/include/arc.archives.class.php文件(这是文章列表页的核心文件)。 -
找到
ParseTemplets()函数(通常在文件末尾)。 -
在函数内,找到
$tmpfile变量赋值的地方,在其后面添加以下代码:// 自动识别移动端并切换模板 if ($this->ChannelType > 0 && $this->ChannelType < 8) { if ($this->IsMobile()) { $tmpfile = str_replace('.htm', '_m.htm', $tmpfile); if (!file_exists($tmpfile)) { $tmpfile = str_replace($GLOBALS['cfg_templets_dir'], $GLOBALS['cfg_templets_dir'] . '/mobile', $tmpfile); } } }- 这段代码的作用是:如果当前是移动端访问,并且模板文件存在
_m后缀的版本,就加载移动端模板。
- 这段代码的作用是:如果当前是移动端访问,并且模板文件存在
-
保存文件并上传到服务器。
注意:如果你的网站首页是动态的(
index.php),还需要修改/include/extend.func.php文件,在其中添加IsMobile()函数,或者在/index.php中加入类似的判断逻辑,对于大多数静态化首页,修改arc.archives.class.php已经足够。
移动端模板制作要点
制作一个好的移动端模板,不仅仅是缩小屏幕,更要遵循移动端的设计原则:
- 简洁的布局:减少栏目数量,突出核心内容,使用大字体、大按钮,方便手指点击。
- 响应式设计:虽然DedeCMS是靠切换模板实现的,但你的移动端模板内部也可以使用媒体查询,使其在不同尺寸的手机上(如iPhone vs 安卓旗舰)都有良好表现。
- 优化图片:使用更小的图片尺寸,或使用
srcset属性提供不同分辨率的图片,以加快加载速度。 - 简化导航:使用底部导航栏(Tab Bar)或顶部下拉菜单,替代PC端的复杂横向导航。
- 触摸友好:确保所有可点击元素的间距足够大,避免误触。
- 内容适配页的
article_article.htm和article_article_m.htm尤其重要,移动端文章页应该去掉多余的侧边栏,让内容居中显示,字体行间距加大,提升阅读体验。
独立移动站点(子域名)方案简介
如果你的移动端和PC端内容差异很大,或者希望有完全不同的设计,可以选择此方案。
实现步骤:
- 服务器配置:在你的服务器上为子域名(如
m.yourdomain.com)创建一个站点,指向网站根目录下的一个新文件夹(如/m/)。 - 安装DedeCMS:在
/m/文件夹里,重新安装一个简化版的 DedeCMS。 - 模板制作:为这个新的DedeCMS制作一套完全独立的移动端模板,放在
/m/templets/目录下。 - 内容同步(可选):如果你希望内容与PC端同步,可以使用DedeCMS的 “数据调用” 功能,在移动端通过标签
{dede:arclist}等调用主站数据库的内容,实现内容分离但数据统一,或者使用更高级的API接口方案。
优缺点:
- 优点:
- 完全独立的代码和模板,自由度最高。
- 对搜索引擎非常友好,可以明确告诉Google/Bing这是移动专用版本。
- 可以针对移动端做极致的性能优化。
- 缺点:
- 维护成本高,需要更新两套系统(如果内容不同步)。
- 开发和部署工作量大。
总结与建议
| 特性 | 自动切换模板 | 独立移动站点 |
|---|---|---|
| 实现难度 | 低 | 高 |
| 维护成本 | 低 (一套内容) | 高 (两套系统或复杂同步) |
| 开发自由度 | 中 (受限于模板切换机制) | 高 (完全独立) |
| SEO | 良好 (通过 rel="alternate" 和 rel="canonical"
| |
| 推荐场景 | 绝大多数网站,特别是内容型网站 | 电商、大型门户、对移动端体验有极致要求的网站 |
对于绝大多数 DedeCMS 强烈推荐使用第一种“自动识别并切换模板”的方案,它简单、高效,并且能很好地满足移动端浏览的需求,同时大大降低了维护的复杂性。
