织梦PC与手机版后台不同,如何共享同一数据库?

99ANYc3cd6
预计阅读时长 22 分钟
位置: 首页 织梦建站 正文

核心原理

要实现这个目标,我们需要理解织梦CMS的基本结构:

织梦pc版和手机版不同后台同一数据库
(图片来源网络,侵删)
  1. 数据库: 存储所有网站内容,如文章、分类、会员、系统配置等。
  2. 程序文件: 包括PHP核心文件、后台管理文件、前台模板文件等。
  3. 后台: 一个独立的程序目录(通常是 /dede/),用于管理网站内容和数据。
  4. 前台: 网站用户访问的页面,通过读取数据库和模板文件生成网页。

我们的目标是:

  • 共享数据库: PC和手机版都连接到同一个数据库,读取和写入完全相同的数据。
  • 独立后台: PC端的后台和手机端的后台是两个完全独立的程序,它们各自管理自己的系统设置、模板、栏目等,互不影响。
  • 前台分离: PC端和手机端的前台展示使用不同的模板,但数据源相同。

详细操作步骤

假设你已经有一个正常的PC版织梦网站,现在要为其添加一个独立的手机版后台。

步骤 1:准备手机版程序文件

  1. 下载织梦程序: 从织梦官方下载一份完整的织梦CMS程序包。

  2. 解压并准备: 将下载的织梦程序解压,你会得到一个完整的织梦文件结构。

    织梦pc版和手机版不同后台同一数据库
    (图片来源网络,侵删)
  3. 复制核心文件: 将解压后的织梦程序中的以下核心文件夹和文件,复制到你现有网站的根目录下:

    • /include/ (核心类库和函数)
    • /plus/ (前台功能模块,如评论、会员空间等)
    • /member/ (会员中心)
    • /special/ (专题功能)
    • /static/ (静态资源,如CSS、JS、图片等)
    • /data/ (缓存目录,需要给写入权限)
    • /install/ (安装目录,可以删除或保留)
    • index.php (前台入口文件)
    • config.cache.bak.php (这个文件是关键,用于覆盖后台的配置)

    注意: 不要直接覆盖你现有的 /dede/ 后台文件夹!我们只需要核心的运行文件。

步骤 2:创建独立的手机版后台

这是最关键的一步,我们将创建一个全新的、独立的手机版后台。

  1. 重命名后台文件夹: 在你的网站根目录下,找到 /dede/ 文件夹,将其复制一份,并重命名,命名为 /m_dede//mobile_admin/,这里我们以 /m_dede/ 为例。

    织梦pc版和手机版不同后台同一数据库
    (图片来源网络,侵删)
    • 原PC后台: /dede/
    • 新手机后台: /m_dede/
  2. 修改手机版后台的配置文件:

    • 进入新创建的 /m_dede/ 目录。
    • 找到 config.php 文件,用编辑器打开它。
    • 修改数据库连接信息,确保它完全一致地指向你现有的数据库。
      // $cfg_dbhost = 'localhost';
      // $cfg_dbuser = 'your_db_user';
      // $cfg_dbpwd = 'your_db_password';
      // $cfg_dbname = 'your_db_name';
      // $cfg_dbprefix = 'dede_'; // 前缀也要保持一致!
    • 修改后台管理目录的路径,防止和PC后台混淆:
      // $cfg_cmspath = '/'; // 这通常指向网站根目录
      // $cfg_adminpath = '/m_dede/'; // 将这里修改为你手机版后台的实际路径
  3. 覆盖核心配置: 回到网站根目录,将之前复制的 config.cache.bak.php 文件重命名config.cache.php,这个文件会强制告诉手机版的后台程序,它应该使用哪个数据库配置,如果不行,也可以直接编辑 /m_dede/ 目录下的 config.php 来确保配置正确。

  4. 设置手机版后台入口: 为了安全,建议修改手机版后台的默认入口文件名。

    • 进入 /m_dede/ 目录。
    • login.php 重命名为你自定义的文件名,m_login.php
    • 相应地,将 index.php 也重命名为 m_index.php
    • 修改 m_login.php 文件中的跳转地址,确保它指向 m_index.php

步骤 3:配置PC和手机版前台模板

PC和手机版的前台都指向了同一个入口 index.php,我们需要让它们能自动识别设备并加载不同的模板。

  1. 创建手机版模板目录:

    • 在你的模板目录 /templets/ 下,创建一个新的文件夹,default_mobile/
    • 将你PC版的模板文件(index.htm, list_article.htm 等)复制default_mobile/ 目录中,然后根据手机屏幕进行修改,使其成为移动端友好的模板。
  2. 修改前台入口文件 index.php:

    • 打开网站根目录下的 index.php
    • 在文件最顶部,require_once(dirname(__FILE__)."/include/common.inc.php"); 这行代码之前,添加以下PHP代码来实现设备识别和模板切换:
    require_once(dirname(__FILE__)."/include/arc.partview.class.php");
    // 检测是否为移动设备
    function is_mobile() {
        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
        if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
            return true;
        }
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset($_SERVER['HTTP_VIA'])) {
            // 找不到为flase,否则为true
            return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
        }
        // 脑残法,判断手机发送的客户端标志
        if (isset($_SERVER['HTTP_USER_AGENT'])) {
            $clientkeywords = array('nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile');
            // 从HTTP_USER_AGENT中查找手机浏览器的关键字
            if (preg_match("/(".implode('|', $clientkeywords).")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
                return true;
            }
        }
        // 协议法,因为有可能不准确,放到最后判断
        if (isset($_SERVER['HTTP_ACCEPT'])) {
            // 如果只支持wml并且不支持html那一定是移动设备
            // 如果支持wml和html但是wml在html之前则是移动设备
            if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') > 0) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === 0 || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
                return true;
            }
        }
        return false;
    }
    // 如果是移动设备,则设置手机版模板
    if (is_mobile()) {
        define('DEDETEMPLATE', '/templets/default_mobile/');
    } else {
        define('DEDETEMPLATE', '/templets/default/'); // PC版模板目录
    }
    • 注意: 上述代码定义了一个常量 DEDETEMPLATE,你需要确保你的模板文件(如 index.htm)在调用 {dede:include filename="head.htm"/} 等标签时,能够正确使用这个常量,织梦默认可能不支持,你可能需要修改 include/typelink.class.php 或其他相关文件,或者直接在你的模板里使用绝对路径,如 /templets/default_mobile/head.htm,一个更简单的方法是在后台的“系统基本参数”中设置默认模板目录,但这种方法不够灵活,推荐使用上述PHP代码配合修改 arc.partview.class.php 来实现更智能的模板切换。
  3. 修改栏目和文章的“默认模板选项”:

    • 登录PC后台 (/dede/),进入“核心” -> “频道模型” -> “内容模型管理”,为文章模型设置一个默认的手机版模板路径,如 /templets/default_mobile/article_article.htm
    • 进入“栏目管理”,为每个栏目设置“列表模板”和“文章默认模板”时,分别填写PC版和手机版的模板路径。
      • PC版列表模板: /templets/default/list_article.htm
      • 手机版列表模板: /templets/default_mobile/list_article.htm
      • PC版文章默认模板: /templets/default/article_article.htm
      • 手机版文章默认模板: /templets/default_mobile/article_article.htm

总结与注意事项

总结流程:

  1. 共享数据: PC和手机版通过配置 /m_dede/config.php 和根目录的 config.cache.php 连接同一个数据库。
  2. 独立后台: 复制 /dede//m_dede/,并修改其内部配置,使其成为一个独立的管理入口。
  3. 前台分离:
    • 创建手机版模板目录(如 default_mobile/)。
    • 修改 index.php,通过设备识别代码动态设置模板路径。
    • 在PC后台中,为每个栏目和模型指定PC和手机两套不同的模板文件。

重要注意事项:

  1. 插件和扩展: 如果你在PC后台安装了插件,这些插件的数据(表)通常也会被手机版后台共享,但手机版后台本身没有这些插件的管理界面,如果你需要在手机端管理某个插件,需要将该插件的管理文件也复制到 /m_dede/ 目录下,并进行相应配置,这可能会比较复杂。
  2. 数据一致性: 由于共享数据库,PC后台和手机后台对数据的修改是实时同步的,在PC后台删除一篇文章,手机端也会立刻消失,这通常是期望的结果,但需要明确。
  3. URL规则: 织梦的URL规则(伪静态)也需要为PC和手机端分别配置,你可能需要修改 .htaccess 文件,为手机端的URL添加一个前缀(如 /m/),并设置相应的重写规则,将 你的域名/a/1.html 指向PC版,将 你的域名/m/a/1.html 指向手机版。
  4. 测试: 完成配置后,务必进行充分测试,测试内容包括:
    • PC后台和手机后台是否能正常登录和管理。
    • 前台在PC和手机上是否能正确加载对应的模板。
    • 文章的发布、修改、删除是否在两端同步。
    • 栏目的修改是否生效。
  5. 安全性: 独立的手机后台也需要像PC后台一样做好安全防护,修改默认管理员账号和密码,定期更新程序。

通过以上步骤,你就可以成功搭建一个数据共享、后台独立、前台分离的织梦PC+手机网站了。

-- 展开阅读全文 --
头像
c语言程序设计实验与习题指导答案颜晖
« 上一篇 2025-12-03
颜晖C语言实验习题答案哪里有?
下一篇 » 2025-12-03

相关文章

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

目录[+]