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

(图片来源网络,侵删)
- 数据库: 存储所有网站内容,如文章、分类、会员、系统配置等。
- 程序文件: 包括PHP核心文件、后台管理文件、前台模板文件等。
- 后台: 一个独立的程序目录(通常是
/dede/),用于管理网站内容和数据。 - 前台: 网站用户访问的页面,通过读取数据库和模板文件生成网页。
我们的目标是:
- 共享数据库: PC和手机版都连接到同一个数据库,读取和写入完全相同的数据。
- 独立后台: PC端的后台和手机端的后台是两个完全独立的程序,它们各自管理自己的系统设置、模板、栏目等,互不影响。
- 前台分离: PC端和手机端的前台展示使用不同的模板,但数据源相同。
详细操作步骤
假设你已经有一个正常的PC版织梦网站,现在要为其添加一个独立的手机版后台。
步骤 1:准备手机版程序文件
-
下载织梦程序: 从织梦官方下载一份完整的织梦CMS程序包。
-
解压并准备: 将下载的织梦程序解压,你会得到一个完整的织梦文件结构。
(图片来源网络,侵删) -
复制核心文件: 将解压后的织梦程序中的以下核心文件夹和文件,复制到你现有网站的根目录下:
/include/(核心类库和函数)/plus/(前台功能模块,如评论、会员空间等)/member/(会员中心)/special/(专题功能)/static/(静态资源,如CSS、JS、图片等)/data/(缓存目录,需要给写入权限)/install/(安装目录,可以删除或保留)index.php(前台入口文件)config.cache.bak.php(这个文件是关键,用于覆盖后台的配置)
注意: 不要直接覆盖你现有的
/dede/后台文件夹!我们只需要核心的运行文件。
步骤 2:创建独立的手机版后台
这是最关键的一步,我们将创建一个全新的、独立的手机版后台。
-
重命名后台文件夹: 在你的网站根目录下,找到
/dede/文件夹,将其复制一份,并重命名,命名为/m_dede/或/mobile_admin/,这里我们以/m_dede/为例。
(图片来源网络,侵删)原PC后台: /dede/新手机后台: /m_dede/
-
修改手机版后台的配置文件:
- 进入新创建的
/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/'; // 将这里修改为你手机版后台的实际路径
- 进入新创建的
-
覆盖核心配置: 回到网站根目录,将之前复制的
config.cache.bak.php文件重命名为config.cache.php,这个文件会强制告诉手机版的后台程序,它应该使用哪个数据库配置,如果不行,也可以直接编辑/m_dede/目录下的config.php来确保配置正确。 -
设置手机版后台入口: 为了安全,建议修改手机版后台的默认入口文件名。
- 进入
/m_dede/目录。 - 将
login.php重命名为你自定义的文件名,m_login.php。 - 相应地,将
index.php也重命名为m_index.php。 - 修改
m_login.php文件中的跳转地址,确保它指向m_index.php。
- 进入
步骤 3:配置PC和手机版前台模板
PC和手机版的前台都指向了同一个入口 index.php,我们需要让它们能自动识别设备并加载不同的模板。
-
创建手机版模板目录:
- 在你的模板目录
/templets/下,创建一个新的文件夹,default_mobile/。 - 将你PC版的模板文件(
index.htm,list_article.htm等)复制到default_mobile/目录中,然后根据手机屏幕进行修改,使其成为移动端友好的模板。
- 在你的模板目录
-
修改前台入口文件
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来实现更智能的模板切换。
- 打开网站根目录下的
-
修改栏目和文章的“默认模板选项”:
- 登录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
- PC版列表模板:
- 登录PC后台 (
总结与注意事项
总结流程:
- 共享数据: PC和手机版通过配置
/m_dede/config.php和根目录的config.cache.php连接同一个数据库。 - 独立后台: 复制
/dede/为/m_dede/,并修改其内部配置,使其成为一个独立的管理入口。 - 前台分离:
- 创建手机版模板目录(如
default_mobile/)。 - 修改
index.php,通过设备识别代码动态设置模板路径。 - 在PC后台中,为每个栏目和模型指定PC和手机两套不同的模板文件。
- 创建手机版模板目录(如
重要注意事项:
- 插件和扩展: 如果你在PC后台安装了插件,这些插件的数据(表)通常也会被手机版后台共享,但手机版后台本身没有这些插件的管理界面,如果你需要在手机端管理某个插件,需要将该插件的管理文件也复制到
/m_dede/目录下,并进行相应配置,这可能会比较复杂。 - 数据一致性: 由于共享数据库,PC后台和手机后台对数据的修改是实时同步的,在PC后台删除一篇文章,手机端也会立刻消失,这通常是期望的结果,但需要明确。
- URL规则: 织梦的URL规则(伪静态)也需要为PC和手机端分别配置,你可能需要修改
.htaccess文件,为手机端的URL添加一个前缀(如/m/),并设置相应的重写规则,将你的域名/a/1.html指向PC版,将你的域名/m/a/1.html指向手机版。 - 测试: 完成配置后,务必进行充分测试,测试内容包括:
- PC后台和手机后台是否能正常登录和管理。
- 前台在PC和手机上是否能正确加载对应的模板。
- 文章的发布、修改、删除是否在两端同步。
- 栏目的修改是否生效。
- 安全性: 独立的手机后台也需要像PC后台一样做好安全防护,修改默认管理员账号和密码,定期更新程序。
通过以上步骤,你就可以成功搭建一个数据共享、后台独立、前台分离的织梦PC+手机网站了。
