DedeCMS 作为主站,负责内容展示、SEO和用户引流;ECShop 作为商城系统,负责商品交易和订单管理。

下面我将提供两种主流的整合方案,并详细说明各自的优缺点和实施步骤。
数据整合(推荐,最稳定、最常用)
这种方案的核心是打通两个系统的数据库,让它们共享用户数据,DedeCMS 的内容页通过特定方式调用 ECShop 的商品信息,用户在 DedeCMS 站点可以直接跳转到 ECShop 进行购买。
优点:
- 稳定可靠:两个系统核心文件完全独立,互不影响,升级和维护简单。
- 用户体验好:用户可以在内容页直接看到商品信息并跳转购买,流程顺畅。
- SEO 效果佳:所有商品详情页都在 DedeCMS 中,URL 格式可以自定义,有利于搜索引擎收录。
- 资源占用低:DedeCMS 首页和内容页加载速度快,不受 ECShop 复杂程序影响。
缺点:

- 技术要求稍高:需要修改数据库和部分 PHP 文件,对新手有一定门槛。
- 数据同步延迟:如果直接在 ECShop 后台添加商品,DedeCMS 不会自动同步,需要手动或通过脚本触发更新。
实施步骤详解:
第一步:环境准备
-
安装两个系统:将 ECShop 和 DedeCMS 分别安装到你的服务器上,为了方便,建议安装在同一个主域名下的不同子目录。
http://www.yourdomain.com/dede/(DedeCMS)http://www.yourdomain.com/ecshop/(ECShop)
-
确保数据库连接:确保两个系统都能正常连接到各自的数据库,为了整合方便,强烈建议将两个系统安装到同一个数据库中,但使用不同的表前缀。
- DedeCMS 表前缀:
dede_ - ECShop 表前缀:
ecs_
- DedeCMS 表前缀:
第二步:用户数据整合
这是整合的关键,目的是让用户在一个系统注册后,另一个系统也能登录。
-
分析用户表结构:
- DedeCMS 用户表:
dede_admin(管理员),dede_member(会员) - ECShop 用户表:
ecs_admin_user(管理员),ecs_users(会员)
- DedeCMS 用户表:
-
创建同步触发器(推荐方法): 这是最优雅的同步方式,当在一个表中插入或更新用户数据时,数据库会自动同步到另一个表。
-
为 DedeCMS 的
dede_member表创建触发器,同步到 ECShop 的ecs_users表:DELIMITER // CREATE TRIGGER sync_member_to_ecs_user AFTER INSERT ON dede_member FOR EACH ROW BEGIN -- 检查 ECShop 中是否已存在该用户,不存在则插入 IF NOT EXISTS (SELECT user_id FROM ecs_users WHERE user_name = NEW.mtype) THEN INSERT INTO ecs_users (user_id, user_name, password, email, reg_time, user_rank, user_money, credit_points, pay_points) VALUES (NEW.mid, NEW.mtype, NEW.pwd, NEW.email, NEW.regdate, 0, 0, 0, 0); END IF; END; // DELIMITER ;注意:
dede_member表中的mtype字段通常是用户名,pwd是 MD5 密码,请根据你的实际情况调整字段映射。 -
为 ECShop 的
ecs_users表创建触发器,同步到 DedeCMS 的dede_member表:DELIMITER // CREATE TRIGGER sync_ecs_user_to_member AFTER INSERT ON ecs_users FOR EACH ROW BEGIN -- 检查 DedeCMS 中是否已存在该用户,不存在则插入 IF NOT EXISTS (SELECT mid FROM dede_member WHERE mtype = NEW.user_name) THEN INSERT INTO dede_member (mid, mtype, pwd, email, regdate) VALUES (NEW.user_id, NEW.user_name, NEW.password, NEW.email, NEW.reg_time); END IF; END; // DELIMITER ; -
注意:触发器只能处理新增用户,对于用户信息(如密码、邮箱)的修改,也需要创建
AFTER UPDATE触发器,逻辑类似。
-
-
修改登录程序(备选方法): 如果觉得触发器复杂,可以修改 DedeCMS 和 ECShop 的登录程序,让它们在验证用户时,同时去对方的数据库表中查找,这种方法代码侵入性强,不如触发器稳定。
第三步:商品数据调用
在 DedeCMS 中,我们需要一种方式来显示 ECShop 的商品。
-
修改 DedeCMS 模板: 在 DedeCMS 的文章内容页或列表页模板中,使用自定义函数或标签来调用 ECShop 的商品数据。
-
创建自定义函数(推荐): 在 DedeCMS 根目录下的
include/extend.func.php文件中(如果没有则创建一个),添加一个函数来查询 ECShop 的商品。// 文件路径: /include/extend.func.php function GetEcsGoods($goods_id) { global $dsql; // 确保 ECShop 的数据库配置和 DedeCMS 一致 // 如果不一致,需要在这里手动连接 ECShop 的数据库 $sql = "SELECT g.goods_id, g.goods_name, g.goods_thumb, g.goods_img, g.shop_price, g.market_price FROM `ecs_goods` AS g WHERE g.goods_id = $goods_id AND g.is_delete = 0 AND g.is_on_sale = 1"; $row = $dsql->GetOne($sql); return $row; } -
在 DedeCMS 内容页中使用: 假设你在写一篇关于某款手机的文章,文章内容里提到了这款手机的 ECShop 商品 ID 是
100。模板(
/templets/default/article_article.htm)中,你可以这样调用:{dede:field.content/} <!-- 调用商品信息 --> {php $goods = GetEcsGoods(100);} {if $goods} <div class="ecs-goods-box"> <h3>相关商品</h3> <a href="/ecshop/goods.php?id={$goods['goods_id']}" target="_blank"> <img src="{$goods['goods_thumb']}" alt="{$goods['goods_name']}"> <h4>{$goods['goods_name']}</h4> <p>价格: ¥{$goods['shop_price']}</p> </a> </div> {/if}
第四步:统一登录和退出(进阶)
为了更好的用户体验,可以修改 DedeCMS 的登录和退出接口,使其在登录/退出时,也去调用 ECShop 的登录/退出接口(通常是一个 API 文件),这需要一定的开发能力,但可以实现真正的“单点登录”。
页面框架整合(iframe 方式)
这种方案是将 ECShop 的页面嵌入到 DedeCMS 的模板框架中,看起来就像是 DedeCMS 的一部分。
优点:
- 实现简单:不需要修改数据库和核心代码,只需修改模板。
- 界面统一:可以快速让商城的页面风格和主站保持一致。
缺点:
- 非常不推荐:存在严重的 SEO 问题,搜索引擎无法很好地抓取 iframe 中的内容。
- 用户体验差:URL 地址栏不会改变,用户无法直接收藏商品页,前进后退功能可能混乱。
- 安全性问题:iframe 可能被用于点击劫持等攻击。
- 性能影响:相当于在一个页面中加载了两个完整的网站,速度会变慢。
实施步骤(极其简单):
-
修改 DedeCMS 模板:在 DedeCMS 模板中需要显示商城的位置,使用
<iframe><!-- 在 DedeCMS 的首页模板中 --> <div class="main-content"> <div class="site-news"> <!-- DedeCMS 的新闻列表等内容 --> {dedarclist titlelen='40' row='10'} </div> <div class="shop-area"> <h2>在线商城</h2> <!-- 用 iframe 嵌入 ECShop 的首页 --> <iframe src="/ecshop/index.php" width="100%" height="1500px" frameborder="0" scrolling="no"></iframe> </div> </div> -
调整样式:通过 CSS 调整 iframe 的宽高和边距,使其看起来更协调。
由于方案二的巨大缺陷, 强烈建议您不要在生产环境中使用此方案,它只适合用于临时的、对 SEO 无要求的内部测试。
总结与建议
| 特性 | 数据整合 | iframe 整合 |
|---|---|---|
| 稳定性 | 高 | 低 |
| SEO 效果 | 好 | 差 |
| 用户体验 | 好 | 一般 |
| 技术难度 | 中等 | 低 |
| 推荐度 | 强烈推荐 | 不推荐 |
最终建议:
请选择 方案一(数据整合),虽然初期搭建需要一些技术工作,但它为你提供了一个稳定、高效、对搜索引擎友好的网站架构,这不仅仅是一个简单的整合,更是一次网站架构的优化,能为你带来长远的流量和收益。
如果你对 PHP 和 SQL 不熟悉,可以寻找有经验的开发者来完成这项工作,或者参考一些开源的整合插件(虽然随着版本更新,可能需要自行调整)。
