这是一个非常经典和常见的网站建设需求,核心目标就是:用一套数据库,同时驱动PC网站和手机WAP网站,但又能根据用户访问的设备类型,自动展示不同的PC版或WAP版模板。

(图片来源网络,侵删)
下面我将从原理、实现步骤、优缺点以及更优的替代方案等多个角度为您进行全面解析。
核心原理
实现PC和WAP公用数据库的核心原理是 “数据分离,模板分离”。
- 数据公用,比如文章、产品、图集、分类等,都存储在同一个数据库的同一张表中,所有文章都存在
dede_archives表里。 - 模板分离:创建两套完全独立的模板文件。
- PC模板:存放在
/templets/pc/目录下。 - WAP/移动端模板:存放在
/templets/wap/目录下。
- PC模板:存放在
- 智能识别与切换:通过在织梦的核心文件中添加一段代码,来识别用户的访问设备,如果用户用手机访问,系统就自动调用WAP模板;如果用户用电脑访问,就调用PC模板。
这样一来,后台只需要发布一次内容,前台就能根据设备自动展示最合适的界面,实现了数据的高度复用。
详细实现步骤
以下是具体的操作步骤,请务必备份您的网站文件和数据库后再进行操作。

(图片来源网络,侵删)
第1步:创建移动端模板目录
- 在您的织梦网站根目录下的
/templets/文件夹中,新建一个文件夹,命名为wap(或者你喜欢的任何名字,如mobile)。 - 将PC端默认模板(
default)中的所有文件复制到/templets/wap/目录中,这些文件包括:index.html(首页模板)list_article.htm(文章列表页模板)article_article.htm(文章内容页模板)- 以及其他你可能用到的模板文件,如搜索页、表单页等。
第2步:修改移动端模板样式
打开 /templets/wap/ 目录下的所有模板文件,将PC版的CSS样式和JS脚本替换为适合移动端的版本。
- CSS:移除
px(像素)单位,改用rem或em等相对单位;简化布局,使用流式或响应式布局;增大字体和按钮尺寸以方便触摸。 - JS:移除或替换不兼容移动端的JS库(如一些复杂的jQuery插件)。
- HTML:优化图片,使用
srcset或<picture>标签以适应不同屏幕;简化导航结构。
第3步:核心步骤 - 修改核心文件以实现设备识别
这是最关键的一步,我们需要修改织梦的 include 目录下的一个文件,让它在加载模板前自动判断设备类型。
-
打开文件:
/include/extend.func.php- 如果这个文件不存在,请在
/include/目录下新建一个名为extend.func.php的文件。
- 如果这个文件不存在,请在
-
在
extend.func.php文件中,添加以下函数,这个函数将用于检测用户设备。
(图片来源网络,侵删)/** * 检测设备是否为移动设备 * @return bool */ 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; } } // 协法,判断是否为wap网关 if (isset($_SERVER['HTTP_ACCEPT'])) { // 如果只支持wml并且不支持html,那么是移动设备 // 如果支持wml和html,但是wml在html之前,则是移动设备 if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { return true; } } return false; } -
修改
include/common.inc.php文件。- 打开
/include/common.inc.php文件。 - 在文件末尾
?>之前,添加以下代码:
// 自动识别设备并设置模板风格 if (!defined('DEDETEMPLATE')) { if (is_mobile()) { define('DEDETEMPLATE', '/templets/wap'); // 移动端模板目录 } else { define('DEDETEMPLATE', '/templets/default'); // PC端模板目录,根据你的实际情况修改 } } - 打开
代码解释:
is_mobile()函数会检查$_SERVER中的各种信息(如HTTP_USER_AGENT),来判断用户是否正在使用手机或平板等移动设备。common.inc.php是织梦的核心初始化文件,它会在每个页面加载时首先执行。- 我们在这里调用
is_mobile()函数,如果返回true(是移动设备),就定义一个常量DEDETEMPLATE,其值为/templets/wap,否则,就设置为PC端的模板目录(如/templets/default)。 - 织梦系统在后续加载模板时,会自动使用这个常量来定位模板文件,从而实现了自动切换。
第4步:清理缓存并测试
- 登录织梦后台,进入“系统” -> “性能选项” -> “清除所有缓存”。
- 用电脑浏览器访问您的网站,确认看到的是PC版模板。
- 用手机浏览器访问您的网站(或者用电脑浏览器的“开发者工具”切换到手机模式),确认看到的是WAP版模板。
至此,PC和WAP公用数据库的设置就完成了。
优缺点分析
优点:
- 数据高度统一:后台只需维护一套数据,内容发布一次,多端展示,极大降低了管理成本。
- 实现成本较低:相比完全独立的移动站点,这种方案不需要额外的数据库,开发难度和成本都更低。
- 利于SEO:因为只有一个域名,所有权重都集中在这个域名上,避免了移动站和PC站权重分散的问题。
缺点:
- 模板维护成本高:PC和WAP是两套独立的模板,如果需要修改文章内容(在文章详情页增加一个字段),两套模板都需要同时修改,容易遗漏。
- 扩展性有限:这种方案主要实现了模板的切换,但对于复杂的移动端功能(如调用手机特有的API、使用微信JS-SDK等)支持不够灵活。
- 性能不是最优:所有设备都加载同一套数据,对于移动端来说,可能会加载一些不必要的字段或内容,虽然可以通过模板优化,但不如独立移动站那样可以做到极致的性能定制。
更优的替代方案:响应式设计
随着技术的发展,响应式设计 已经成为当前的主流和更优的解决方案。
什么是响应式设计? 响应式设计是一种网页设计方法,它能让网页的布局和内容根据用户屏幕尺寸的大小自动进行适配,你只需要编写一套模板,通过CSS3中的媒体查询等技术,让这套模板在不同设备上(PC、平板、手机)呈现出最佳的显示效果。
如何为织梦实现响应式设计?
- 选择一套响应式模板:在织梦模板市场或第三方网站寻找并下载一套“响应式”的织梦模板,这些模板已经内置了媒体查询代码。
- 修改现有模板:如果你有自己的PC模板,可以请前端开发人员对其进行改造,加入媒体查询代码,使其成为响应式模板。
- 无需修改核心文件:因为只有一套模板,所以你不需要像上面那样去修改
common.inc.php等核心文件。
响应式设计的优势:
- 一套模板,多端适配:彻底解决了PC/WAP两套模板维护麻烦的问题。
- 真正的数据公用:不仅是数据库,连模板文件也是一套,实现了最大程度的统一。
- 用户体验更好:URL不变,用户在不同设备间切换时不会感到割裂。
- SEO友好:一个URL对应一个页面,权重集中,是Google和百度推荐的做法。
响应式设计的劣势:
- 初期开发成本可能更高:需要前端开发人员具备响应式设计的技能。
- 对图片和资源优化要求高:需要考虑不同网络环境下的加载速度,可能需要使用图片延迟加载、不同分辨率图片适配等技术。
总结与建议
| 方案 | 实现原理 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| PC/WAP公用数据库 | 数据公用,模板分离 | 成本低,数据统一,SEO权重集中 | 模板维护成本高,扩展性差 | 预算有限,对移动端要求不高,且已有PC模板不想大改的旧站改造。 |
| 响应式设计 | 一套模板,CSS适配 | 维护简单,体验好,是业界标准 | 初期开发成本高,对前端技术要求高 | 强烈推荐,几乎所有新项目都应该优先考虑响应式设计。 |
给您的建议:
- 对于新网站:请直接选择响应式设计方案,这是更先进、更高效、更具前瞻性的选择,能为您省去未来无数的维护麻烦。
- 对于已有的织梦旧站:
- 如果预算有限,且移动端需求简单,那么采用PC/WAP公用数据库的方案是一个快速可行的过渡方案。
- 如果有长期规划,建议逐步将旧站模板改造为响应式模板,或者考虑将网站迁移到更现代化的CMS(如WordPress, Typecho等,它们对响应式支持更好)。
希望这份详细的解答能帮助到您!
