Dede如何适配手机端建站?

99ANYc3cd6
预计阅读时长 21 分钟
位置: 首页 DEDE建站 正文

核心原理:DedeCMS 手机站的工作方式

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

dede 做手机网站
(图片来源网络,侵删)
  1. 共用数据库:手机站和PC端共享同一个数据库里的内容,你只需要在后台发布一次文章,PC端和手机端都可以显示。
  2. 模板分离:为PC端和手机端分别创建独立的模板文件,系统会根据用户访问的设备类型,自动调用对应的模板来渲染页面。
  3. 域名/目录区分:通常通过二级域名(如 m.yourdomain.com)或者子目录(如 yourdomain.com/m/)来访问手机站,实现URL分离。
  4. 自动识别设备:通过一个核心的 autoindex.php 文件(或类似功能的文件)来检测用户的 User-Agent(用户代理字符串),判断是手机还是电脑,然后自动跳转到对应的模板目录。

准备工作

在开始之前,请确保你已经:

  1. 已安装 DedeCMS:确保你的 PC 站点已经正常运行。
  2. 拥有服务器权限:你需要能够通过 FTP 或文件管理器修改网站文件。
  3. 准备好域名解析:如果使用二级域名,请先在域名管理后台添加 mwap 等二级域名的 A 记录,指向你的服务器 IP。
  4. 备份数据!:在进行任何文件修改和数据库操作之前,务必备份你的网站文件和数据库,以防万一。

详细制作步骤

我们将以最常用的 “二级域名 + 独立目录” 方式为例进行讲解。

步骤 1:创建手机站目录和文件结构

在你的网站根目录下,创建一个新的文件夹,/m/,这个文件夹将专门用来存放手机站的文件。

yourdomain.com/
├── dede/          (后台管理目录)
├── m/             (手机站根目录,我们即将创建)
├── templets/      (PC端模板目录)
├── uploads/       (上传文件目录)
├── index.php      (PC站首页入口)
└── ... (其他PC端文件)

步骤 2:复制核心文件到手机站目录

为了实现“同一后台管理”,我们需要将一些核心的 PHP 文件复制到 /m/ 目录中。

dede 做手机网站
(图片来源网络,侵删)
  1. 复制入口文件:将根目录下的 index.php 复制到 /m/ 目录下。
  2. 复制核心程序:将 /include/ 目录下的 arc.partview.class.php 文件复制到 /m/include/ 目录中(/m/include/ 不存在,请手动创建)。
  3. 复制后台入口:将 /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");

在这行代码的下面,添加以下核心代码:

dede 做手机网站
(图片来源网络,侵删)
// ----------------------------
//  手机端自动识别与模板切换
// ----------------------------
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:创建手机站模板

我们需要为手机站创建独立的模板。

  1. 在PC端模板目录创建手机模板文件夹: 在你的 /templets/ 目录下,新建一个文件夹,命名为 m(这个名称要和步骤3中 $cfg_df_tpl 的值保持一致)。

    yourdomain.com/
    └── templets/
        └── m/          (手机模板目录)
            └── index.htm (手机首页模板)
  2. 复制并修改模板文件

    • 将你的PC端首页模板 index.htm 复制到 /templets/m/ 目录下。
    • 修改 /templets/m/index.htm:这个文件就是你的手机首页模板,你需要对它进行移动端优化,使其适合在小屏幕上显示。
      • 简化布局:减少复杂的嵌套和浮动。
      • 使用响应式CSS:可以引入一个轻量级的移动端CSS框架,或者编写简单的媒体查询,让页面能够自适应不同屏幕尺寸。
      • 优化图片:使用更小的图片尺寸,或使用 srcset 属性。
      • 优化导航:使用更简洁、易于触摸的导航菜单(如下拉菜单、汉堡菜单)。
      • 移除不必要的模块:比如PC端的侧边栏、广告位等。
  3. 创建其他页面模板

    • 同理,你需要为列表页 (list_article.htm页 (article_article.htm) 等创建对应的手机模板,并放在 /templets/m/ 目录下。
    • 你可以通过修改 /templets/default/ 目录下的默认模板,然后复制并简化,来快速创建手机模板。

步骤 5:设置网站默认模板

为了让PC端和手机端能够正确调用各自的模板,我们需要在DedeCMS后台进行设置。

  1. 登录你的 DedeCMS 后台 (/dede/)。
  2. 进入 “系统” -> “系统基本参数”
  3. 在左侧菜单选择 “核心设置”
  4. 找到 “网站默认模板风格” 这一项,将其值设置为 m(即我们创建的手机模板目录名)。
  5. 点击“保存设置”。

注意:这个设置会影响所有没有明确指定模板的页面,因为我们已经在 /m/index.php 中做了设备判断,所以PC端访问时会因为 $cfg_df_tpl 未被改变而仍然使用PC模板(PC端的入口文件没有那段判断代码),而手机端访问时则会使用 m 模板。

步骤 6:设置二级域名解析与绑定

  1. 域名解析:到你的域名提供商后台,为 m.yourdomain.com 添加一个 A 记录,指向你的服务器IP。
  2. 服务器绑定
    • 如果是虚拟主机:在虚拟主机控制面板中,将 m.yourdomain.com 这个域名绑定到 /m/ 这个网站目录。
    • 如果是独立服务器/VPS:在网站服务器软件(如 Nginx 或 Apache)的配置文件中,为 m.yourdomain.com 添加一个虚拟主机(Server Block),并将根目录指向 /m/

步骤 7:更新缓存和测试

  1. 更新首页:在 DedeCMS 后台,进入“主页管理” -> “更新主页”,选择你刚刚创建的 /templets/m/index.htm 模板,生成手机首页的静态文件。
  2. 访问测试
    • 在手机浏览器中访问 http://m.yourdomain.com,你应该能看到手机版的首页。
    • 在电脑浏览器中访问 http://m.yourdomain.com,有时PC浏览器也会被识别为移动设备(比如Chrome的“开发者工具”模拟手机),正常情况下应该显示手机站。
    • 在电脑浏览器中访问 http://www.yourdomain.com,确保PC站依然正常显示。

常见问题与注意事项 (FAQ)

  1. Q: 为什么我的手机站显示错乱?

    • A: 检查 /templets/m/ 目录下的模板文件是否正确修改了CSS和HTML结构,确保模板路径(如 img/css/)是相对于 /m/ 目录的,可能需要修改为 ../img//uploads/ 等绝对/相对路径。
  2. Q: 为什么点击文章链接后,还是跳转到PC版内容页?

    • A: 因为文章的默认模板是PC版的 article_article.htm,你需要:
      1. /templets/m/ 目录下创建一个 article_article.htm 文件(手机内容页模板)。
      2. 进入后台“系统” -> “核心设置” -> “栏目设置”,找到“文章模型”的“文章内容页模板”,将其设置为 /m/article_article.htm,或者,更推荐的方式是使用自由列表arclist标签的模板功能,通过JS判断来动态加载不同模板,但比较复杂,最简单的方法是确保手机内容页模板存在。
  3. Q: 使用独立目录 /m/ 好还是二级域名 m.domain.com 好?

    • A: 各有优劣。
      • 二级域名:SEO上更利于搜索引擎将手机站和PC站视为两个独立实体,可以分别优化,配置稍复杂(需要域名解析和服务器绑定)。
      • 独立目录:配置简单,无需额外绑定,SEO上搜索引擎可能会认为内容重复,权重分散,目前Google已经能够很好地处理这种情况,但百度可能仍需注意。
  4. Q: 有没有更现代化的方案?

    • A: 对于新项目,强烈推荐使用 响应式设计,你只需要写一套模板,通过CSS媒体查询来适配不同设备,这样维护起来最简单,用户体验也最好,DedeCMS 也可以实现响应式,只需要在PC端模板中编写响应式CSS即可。

使用 DedeCMS 制作手机站的核心就是 “文件复制 + 代码判断 + 模板分离”,虽然过程略显繁琐,但一旦配置完成,你就可以在一个后台方便地管理双端内容,对于维护老网站来说是一个非常高效且低成本的解决方案。

希望这份详细的指南能帮助你顺利完成手机站的搭建!如果在操作中遇到具体问题,可以随时提出。

-- 展开阅读全文 --
头像
织梦安装视频教程,新手如何快速上手?
« 上一篇 04-12
dede无法上传图片怎么办?
下一篇 » 04-12

相关文章

取消
微信二维码
支付宝二维码

目录[+]