核心原理:DedeCMS 手机站的工作方式
DedeCMS 的手机站通常采用 “同一套后台,两套前台” 的模式,其核心原理是:

- 共用数据库:手机站和PC端共享同一个数据库里的内容,你只需要在后台发布一次文章,PC端和手机端都可以显示。
- 模板分离:为PC端和手机端分别创建独立的模板文件,系统会根据用户访问的设备类型,自动调用对应的模板来渲染页面。
- 域名/目录区分:通常通过二级域名(如
m.yourdomain.com)或者子目录(如yourdomain.com/m/)来访问手机站,实现URL分离。 - 自动识别设备:通过一个核心的
autoindex.php文件(或类似功能的文件)来检测用户的 User-Agent(用户代理字符串),判断是手机还是电脑,然后自动跳转到对应的模板目录。
准备工作
在开始之前,请确保你已经:
- 已安装 DedeCMS:确保你的 PC 站点已经正常运行。
- 拥有服务器权限:你需要能够通过 FTP 或文件管理器修改网站文件。
- 准备好域名解析:如果使用二级域名,请先在域名管理后台添加
m或wap等二级域名的 A 记录,指向你的服务器 IP。 - 备份数据!:在进行任何文件修改和数据库操作之前,务必备份你的网站文件和数据库,以防万一。
详细制作步骤
我们将以最常用的 “二级域名 + 独立目录” 方式为例进行讲解。
步骤 1:创建手机站目录和文件结构
在你的网站根目录下,创建一个新的文件夹,/m/,这个文件夹将专门用来存放手机站的文件。
yourdomain.com/
├── dede/ (后台管理目录)
├── m/ (手机站根目录,我们即将创建)
├── templets/ (PC端模板目录)
├── uploads/ (上传文件目录)
├── index.php (PC站首页入口)
└── ... (其他PC端文件)
步骤 2:复制核心文件到手机站目录
为了实现“同一后台管理”,我们需要将一些核心的 PHP 文件复制到 /m/ 目录中。

- 复制入口文件:将根目录下的
index.php复制到/m/目录下。 - 复制核心程序:将
/include/目录下的arc.partview.class.php文件复制到/m/include/目录中(/m/include/不存在,请手动创建)。 - 复制后台入口:将
/dede/目录下的config.php文件复制到/m/dede/目录中(同样,/m/dede/不存在,请手动创建)。
文件结构示例:
yourdomain.com/
├── m/
│ ├── dede/
│ │ └── config.php (从根目录 /dede/ 复制)
│ ├── include/
│ │ └── arc.partview.class.php (从根目录 /include/ 复制)
│ └── index.php (从根目录复制)
└── ...
步骤 3:修改手机站入口文件 (/m/index.php)
这是最关键的一步,我们需要修改 /m/index.php 文件,让它能够自动识别设备并加载正确的模板。
打开 /m/index.php 文件,找到类似下面这行代码:
require_once(dirname(__FILE__)."/include/common.inc.php");
在这行代码的下面,添加以下核心代码:

// ----------------------------
// 手机端自动识别与模板切换
// ----------------------------
require_once(DEDEINC."/dedehttp.class.php");
$mobilebrowser = 0;
// 检测手机浏览器的 User-Agent
if (preg_match('/(up.browser|up.link|windows ce|iphone|ipod|android|blackberry|opera mobi|opera mini|windows ce|palm|smartphone|iemobile|ipad)/i', $_SERVER['HTTP_USER_AGENT'])) {
$mobilebrowser++;
}
// 检测特定HTTP头
if ((isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) || (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE']))) {
$mobilebrowser++;
}
// 检测WAP协议
if (isset($_SERVER['HTTP_UA_OS']) && preg_match('/(mobile|android|iphone|ipad|ipod|blackberry|windows ce|palm)/i', $_SERVER['HTTP_UA_OS'])) {
$mobilebrowser++;
}
// 如果检测为手机,则设置默认模板为手机模板
if ($mobilebrowser > 0) {
$cfg_df_tpl = 'm'; // 'm' 是手机模板目录的名称,见下一步
}
// ----------------------------
// 手机端自动识别与模板切换 结束
// ----------------------------
// 加载首页文档
$homeFile = dirname(__FILE__)."/{$cfg_df_tpl}/index.html";
if (file_exists($homeFile)) {
include($homeFile);
} else {
$pv = new PartView();
$pv->SetTemplet($cfg_basedir.$cfg_templets_dir."/{$cfg_df_tpl}/index.htm");
$pv->Display();
}
代码解释:
- 这段代码会检查访问者的
HTTP_USER_AGENT和其他 HTTP 头,判断是否为移动设备。 - 如果是移动设备,它会设置一个变量
$cfg_df_tpl = 'm';,这个变量告诉 DedeCMS 使用名为m的模板目录。 - 它会尝试加载编译后的静态缓存文件
/m/m/index.html,如果不存在,则动态调用/templets/m/index.htm模板。
步骤 4:创建手机站模板
我们需要为手机站创建独立的模板。
-
在PC端模板目录创建手机模板文件夹: 在你的
/templets/目录下,新建一个文件夹,命名为m(这个名称要和步骤3中$cfg_df_tpl的值保持一致)。yourdomain.com/ └── templets/ └── m/ (手机模板目录) └── index.htm (手机首页模板) -
复制并修改模板文件:
- 将你的PC端首页模板
index.htm复制到/templets/m/目录下。 - 修改
/templets/m/index.htm:这个文件就是你的手机首页模板,你需要对它进行移动端优化,使其适合在小屏幕上显示。- 简化布局:减少复杂的嵌套和浮动。
- 使用响应式CSS:可以引入一个轻量级的移动端CSS框架,或者编写简单的媒体查询,让页面能够自适应不同屏幕尺寸。
- 优化图片:使用更小的图片尺寸,或使用
srcset属性。 - 优化导航:使用更简洁、易于触摸的导航菜单(如下拉菜单、汉堡菜单)。
- 移除不必要的模块:比如PC端的侧边栏、广告位等。
- 将你的PC端首页模板
-
创建其他页面模板:
- 同理,你需要为列表页 (
list_article.htm页 (article_article.htm) 等创建对应的手机模板,并放在/templets/m/目录下。 - 你可以通过修改
/templets/default/目录下的默认模板,然后复制并简化,来快速创建手机模板。
- 同理,你需要为列表页 (
步骤 5:设置网站默认模板
为了让PC端和手机端能够正确调用各自的模板,我们需要在DedeCMS后台进行设置。
- 登录你的 DedeCMS 后台 (
/dede/)。 - 进入 “系统” -> “系统基本参数”。
- 在左侧菜单选择 “核心设置”。
- 找到 “网站默认模板风格” 这一项,将其值设置为
m(即我们创建的手机模板目录名)。 - 点击“保存设置”。
注意:这个设置会影响所有没有明确指定模板的页面,因为我们已经在 /m/index.php 中做了设备判断,所以PC端访问时会因为 $cfg_df_tpl 未被改变而仍然使用PC模板(PC端的入口文件没有那段判断代码),而手机端访问时则会使用 m 模板。
步骤 6:设置二级域名解析与绑定
- 域名解析:到你的域名提供商后台,为
m.yourdomain.com添加一个 A 记录,指向你的服务器IP。 - 服务器绑定:
- 如果是虚拟主机:在虚拟主机控制面板中,将
m.yourdomain.com这个域名绑定到/m/这个网站目录。 - 如果是独立服务器/VPS:在网站服务器软件(如 Nginx 或 Apache)的配置文件中,为
m.yourdomain.com添加一个虚拟主机(Server Block),并将根目录指向/m/。
- 如果是虚拟主机:在虚拟主机控制面板中,将
步骤 7:更新缓存和测试
- 更新首页:在 DedeCMS 后台,进入“主页管理” -> “更新主页”,选择你刚刚创建的
/templets/m/index.htm模板,生成手机首页的静态文件。 - 访问测试:
- 在手机浏览器中访问
http://m.yourdomain.com,你应该能看到手机版的首页。 - 在电脑浏览器中访问
http://m.yourdomain.com,有时PC浏览器也会被识别为移动设备(比如Chrome的“开发者工具”模拟手机),正常情况下应该显示手机站。 - 在电脑浏览器中访问
http://www.yourdomain.com,确保PC站依然正常显示。
- 在手机浏览器中访问
常见问题与注意事项 (FAQ)
-
Q: 为什么我的手机站显示错乱?
- A: 检查
/templets/m/目录下的模板文件是否正确修改了CSS和HTML结构,确保模板路径(如img/、css/)是相对于/m/目录的,可能需要修改为../img/或/uploads/等绝对/相对路径。
- A: 检查
-
Q: 为什么点击文章链接后,还是跳转到PC版内容页?
- A: 因为文章的默认模板是PC版的
article_article.htm,你需要:- 在
/templets/m/目录下创建一个article_article.htm文件(手机内容页模板)。 - 进入后台“系统” -> “核心设置” -> “栏目设置”,找到“文章模型”的“文章内容页模板”,将其设置为
/m/article_article.htm,或者,更推荐的方式是使用自由列表或arclist标签的模板功能,通过JS判断来动态加载不同模板,但比较复杂,最简单的方法是确保手机内容页模板存在。
- 在
- A: 因为文章的默认模板是PC版的
-
Q: 使用独立目录
/m/好还是二级域名m.domain.com好?- A: 各有优劣。
- 二级域名:SEO上更利于搜索引擎将手机站和PC站视为两个独立实体,可以分别优化,配置稍复杂(需要域名解析和服务器绑定)。
- 独立目录:配置简单,无需额外绑定,SEO上搜索引擎可能会认为内容重复,权重分散,目前Google已经能够很好地处理这种情况,但百度可能仍需注意。
- A: 各有优劣。
-
Q: 有没有更现代化的方案?
- A: 对于新项目,强烈推荐使用 响应式设计,你只需要写一套模板,通过CSS媒体查询来适配不同设备,这样维护起来最简单,用户体验也最好,DedeCMS 也可以实现响应式,只需要在PC端模板中编写响应式CSS即可。
使用 DedeCMS 制作手机站的核心就是 “文件复制 + 代码判断 + 模板分离”,虽然过程略显繁琐,但一旦配置完成,你就可以在一个后台方便地管理双端内容,对于维护老网站来说是一个非常高效且低成本的解决方案。
希望这份详细的指南能帮助你顺利完成手机站的搭建!如果在操作中遇到具体问题,可以随时提出。
