- Discuz!: 强大的社区论坛功能,用户互动、发帖、评论、积分体系等。
- DedeCMS: 成熟的内容管理系统(CMS),适合发布文章、新闻、产品介绍等,SEO 友好。
整合的目标是:实现用户系统统一,内容互通,并能在同一个网站中无缝切换和展示。

(图片来源网络,侵删)
整合的核心思想
整合的关键在于 “统一用户系统” 和 “数据互通”,主要有两种主流的整合方式:
- 用户同步登录(推荐):这是最常用且效果最好的方式,用户在 DedeCMS 站点注册或登录后,可以自动同步到 Discuz! 论坛,反之亦然,用户感觉不到两个系统的存在,就像在一个网站里活动。
- 内容调用:在 DedeCMS 的页面中,调用 Discuz! 的论坛数据(如最新帖子、热门主题等),实现内容联动。
下面,我们将重点介绍 用户同步登录 的详细步骤,因为这是整合的灵魂。
整合准备工作
在开始之前,请确保你已经准备好以下环境:
- 服务器环境:支持 PHP 和 MySQL 的 Web 服务器(如 Apache 或 Nginx)。
- 源码文件:
- Discuz! 源码(
Discuz_X3.4_SC_GBK.zip,注意编码要与 DedeCMS 一致)。 - DedeCMS 源码(
DedeCMS-V5.7-UTF8-SP2.zip)。
- Discuz! 源码(
- 数据库:一个空的 MySQL 数据库。
- 域名和目录规划:
- 假设你的主站是
www.yourdomain.com,使用 DedeCMS。 - 论坛将放在
www.yourdomain.com/bbs/目录下。 - 重要:确保两个系统的编码一致(强烈推荐使用 UTF-8),否则会出现乱码。
- 假设你的主站是
详细整合步骤(以用户同步登录为例)
第一步:安装两个系统
-
安装 DedeCMS
(图片来源网络,侵删)- 将 DedeCMS 源码解压,上传到网站根目录()。
- 访问
www.yourdomain.com/install/,按照向导完成安装。 - 安装成功后,删除
/install/目录。 - 记录下 DedeCMS 的数据库名、用户名、密码。
-
安装 Discuz!
- 将 Discuz! 源码解压,找到
upload文件夹。 - 将
upload文件夹内的所有文件和文件夹,上传到www.yourdomain.com/bbs/目录。 - 访问
www.yourdomain.com/bbs/install/,按照向导完成安装。 - 在 Discuz! 安装步骤中,选择“与已有数据整合”或类似的选项,并填入 DedeCMS 的数据库信息。 这样 Discuz! 会和 DedeCMS 使用同一个数据库,但会创建自己的数据表(表名前缀不同,如
pre_)。 - 安装成功后,删除
/bbs/install/目录。
- 将 Discuz! 源码解压,找到
第二步:修改配置文件以实现同步登录
这是整合的核心,需要修改两个系统的关键文件。
-
修改 DedeCMS (
/config.php)- 用编辑器打开 DedeCMS 根目录下的
/config.php文件。 - 在文件末尾,添加以下代码:
// Discuz! 整合相关配置 define('UC_CONNECT', 'mysql'); // 连接 UCenter 的方式, mysql/localhost/socket define('UC_DBHOST', 'localhost'); // UCenter 数据库主机 define('UC_DBUSER', '你的数据库用户名'); // UCenter 数据库用户名 define('UC_DBPW', '你的数据库密码'); // UCenter 数据库密码 define('UC_DBNAME', '你的数据库名'); // UCenter 数据库名 define('UC_DBTABLEPRE', 'pre_'); // UCenter 数据库表前缀 define('UC_CHARSET', 'utf-8'); // UCenter 数据库字符集 define('UC_KEY', '请在这里填写一个随机字符串'); // 与 UCenter 的通信密钥,请务必修改 define('UC_API', 'http://www.yourdomain.com/bbs/uc_server/'); // UCenter 的 URL 地址 define('UC_APPID', '1'); // 当前应用在 UCenter 上的 ID define('UC_IP', ''); // UCenter 的 IP define('UC_PPPHONE', '12'); // UCenter 的密钥,请务必修改- 注意:
UC_KEY和UC_PPPHONE必须是一个随机且复杂的字符串,请务必自己生成并修改,这是安全的关键。UC_API的路径要确保能访问到你的 Discuz! 的uc_server文件夹。
- 用编辑器打开 DedeCMS 根目录下的
-
修改 Discuz! (
/config/config_ucenter.php)- 用编辑器打开 Discuz! 根目录下的
/config/config_ucenter.php文件。 - 找到文件开头的配置部分,填入与 DedeCMS 中完全相同的信息:
<?php define('UC_CONNECT', 'mysql'); define('UC_DBHOST', 'localhost'); define('UC_DBUSER', '你的数据库用户名'); define('UC_DBPW', '你的数据库密码'); define('UC_DBNAME', '你的数据库名'); define('UC_DBTABLEPRE', 'pre_'); define('UC_CHARSET', 'utf-8'); define('UC_KEY', '请在这里填写一个随机字符串'); // 必须和 DedeCMS 里的 UC_KEY 完全一样 define('UC_API', 'http://www.yourdomain.com/bbs/uc_server/'); define('UC_APPID', '1'); define('UC_IP', ''); define('UC_PPPHONE', '12'); // 必须和 DedeCMS 里的 UC_PPPHONE 完全一样 ?>- 关键:这里的
UC_KEY和UC_PPPHONE必须和 DedeCMS 中的设置一字不差。
- 用编辑器打开 Discuz! 根目录下的
第三步:整合 UCenter
-
登录 UCenter
- 访问
www.yourdomain.com/bbs/uc_server/,使用默认管理员账号admin和你安装时设置的密码登录。 - 首次登录后,请立即修改
admin的密码!
- 访问
-
添加应用
- 在 UCenter 后台,点击左侧菜单的 “应用管理” -> “添加新应用”。
- 应用类型:选择 “其他”。
- 应用名称:填写
DedeCMS(或你喜欢的名字)。 - 通信密钥:必须和你在
config.php中设置的UC_KEY完全一致。 - UCenter URL:
http://www.yourdomain.com/bbs/uc_server/ - 应用 IP:留空。
- 应用登录地址:
http://www.yourdomain.com/member/login.php(DedeCMS 的登录页面) - 应用注册地址:
http://www.yourdomain.com/member/reg_new.php(DedeCMS 的注册页面) - 应用介绍:随意填写。
- 应用主 URL:
http://www.yourdomain.com/(你的 DedeCMS 主站地址) - 其他选项:根据需要填写,通常默认即可。
- 点击提交,成功添加后,UCenter 会自动生成一个
app ID,记下这个 ID。
-
修改 DedeCMS 的 UC_APPID
- 回到 DedeCMS 的
/config.php文件。 - 将
define('UC_APPID', '1');中的1修改为 UCenter 刚刚给你的那个 app ID。
- 回到 DedeCMS 的
-
修改 DedeCMS 的 API 文件
- 将 Discuz! 根目录下的
/api/文件夹,整体复制到 DedeCMS 的根目录下。 - 这样,DedeCMS 就可以通过
/api/目录与 UCenter 通信了。
- 将 Discuz! 根目录下的
第四步:修改模板实现风格统一
为了不让用户感觉到跳转,需要修改模板文件。
-
修改 DedeCMS 的页脚 (
footer.htm)- 在 DedeCMS 后台 -> 模板 -> 默认模板管理 -> 找到并修改
footer.htm。 - 在文件末尾,在
</body>标签之前,加入 Discuz! 的common.js文件,用于处理 Discuz! 的各种 JS 功能(如弹出登录框等)。
<script type="text/javascript" src="/bbs/common.js?{VERHASH}"></script> - 在 DedeCMS 后台 -> 模板 -> 默认模板管理 -> 找到并修改
-
修改 Discuz! 的页头和页脚
- 在 Discuz! 后台 -> 界面 -> 编辑模板 -> 模板风格 -> 默认模板。
- 修改
header.htm:删除或修改 Discuz! 自带的 Logo 和导航,可以加入<iframe>或通过 JS 调用 DedeCMS 的顶部导航栏,以保持风格一致。 - 修改
footer.htm:同样,可以加入 DedeCMS 的页脚信息,或者保持 Discuz! 的页脚。
第五步:测试
-
用户注册测试:
- 访问 DedeCMS 的注册页面 (
/member/reg_new.php),注册一个新用户。 - 注册成功后,立即访问 Discuz! 论坛 (
/bbs/),检查该用户是否已经自动登录,或者是否可以使用该账号在论坛登录。 - 反之,在论坛注册一个用户,检查是否也能在主站登录。
- 访问 DedeCMS 的注册页面 (
-
用户登录测试:
- 在 DedeCMS 登录,然后访问论坛,看是否已登录。
- 在论坛登录,然后访问主站,看是否已登录。
-
数据调用测试 (可选):
- 在 DedeCMS 的首页模板中,可以使用 Discuz! 提供的标签来调用论坛数据。
- 在
index.htm中加入以下代码来调用论坛最新帖子:{dede:loop table="pre_forum_thread" sort="tid" row="10"} <a href="/bbs/viewthread.php?tid=[field:tid/]">[field:title/]</a><br /> {/dede:loop}
整合后常见问题与解决方案
-
乱码问题
- 原因:两个系统的数据库编码或页面编码不一致。
- 解决:确保所有文件(
.php,.html)都是UTF-8编码,且数据库也是UTF-8字符集,这是最根本的解决方法。
-
无法同步登录
- 原因:
config.php和config_ucenter.php中的UC_KEY或UC_PPPHONE不一致。UC_API路径错误。- DedeCMS 根目录下缺少
/api/文件夹。 - 服务器防火墙或安全软件阻止了文件访问。
- 解决:仔细核对以上配置,确保完全正确。
- 原因:
-
风格不统一
- 原因:只是简单的页面跳转,没有修改模板。
- 解决:按照第四步的说明,深入修改
header.htm和footer.htm,甚至可以尝试使用<iframe>嵌入对方的部分页面(虽然不推荐,但简单粗暴)。
Discuz! 和 DedeCMS 的整合是一项技术性较强的工作,但只要按照步骤,细心配置,成功率很高,其核心在于利用 Discuz! 内置的 UCenter 系统作为用户中心,实现两个应用之间的用户数据同步和通信。
整合完成后,你将拥有一个功能强大的“内容+社区”综合性网站,既能通过高质量的内容吸引访客,又能通过活跃的社区增强用户粘性。
