Discuz! X5.0 正式版于2026-03-20发布,今天再度升级论坛程序至 Discuz! X5.0
目前还是使用以前的模板,所以界面上没有明显变化!
请大家统一在这里反馈问题,不要另开帖子!
目前存在的问题:
无
以下问题,已解决!
后续升级仍需要修正的有:
*** 代码标签中 @ 不正常显示,没有原样输出(已修复)
*** 代码标签中出现\会被吃掉一个的情况(已修复)
*** 电脑版可以使用键盘的左右箭头来翻页(程序BUG,人工修复)
*** 手机版:板块列表 + 帖子内部分页,下拉菜单中,选第2页时,会跳转到首页:(程序BUG,人工修复)
*** 手机版"我的"模块中,缺少我的回复,已人工添加
后续升级不需要考虑的问题:
*** 官方升级程序对部分表新增fields json字段默认为空的BUG,影响数据库导入到mariadb 11.8.6,部分表插入报错 (已修复,官方未修复)
*** 帖子列表页中,如有被移动过的帖子的回复数会被标为"-",会报错,要设为0(程序BUG,已修复,官方已修复)
*** 用户取回密码时,在收到邮件后,点确认链接,输入两次密码后,报错;论坛后台搜索用户的存档表,也是报错:(升级程序BUG,官方已修复)
原因:
1.论坛开启了会员数据归档(旧会员自动移到 common_member_archive 表)
2.官方升级包的BUG,升级时只给主表 common_member 加了 loginname 字段
附:安装文件中 install/sql/sql_upgrade_3.5.php 截图
3.没给存档表 common_member_archive 加 loginname 字段
4.找回密码 / 验证用户时,程序同时查主表 + 存档表,一查存档表就报错
解决办法:
- -- 给会员存档表添加缺失的 loginname 字段
- ALTER TABLE pre_common_member_archive
- ADD COLUMN loginname VARCHAR(40) NOT NULL DEFAULT '' AFTER email;
- -- 把存档表里的loginname 赋值为用户名(避免以后重复冲突)
- UPDATE pre_common_member_archive
- SET loginname = username;
- -- 给存档表加上索引(提升查询速度)
- ALTER TABLE pre_common_member_archive
- ADD UNIQUE INDEX loginname (loginname) ;
复制代码 -----------------------
手机版无"我的回复"修改方法:
1. 修改 template/default/touch/home/space_profile.php
找到 - <div class="myinfo_list_ico cl">
- <ul>
- <!--{if helper_access::check_module('forum')}-->
- <li><a href="home.php?mod=space&uid={$space['uid']}&do=thread<!--{if $_G['uid'] == $space['uid']}-->&view=me<!--{/if}-->"><i class="dm-chat-s-fill"></i><!--{if $_G['uid'] == $space['uid']}-->{lang mythread}<!--{else}-->{lang mobta}{lang mobthread}<!--{/if}--></a></li>
复制代码添加 - <li><a href="home.php?mod=space&uid={$space['uid']}&do=thread&type=reply<!--{if $_G['uid'] == $space['uid']}-->&view=me<!--{/if}-->&mobile=2"><i class="dm-chat-s-fill"></i><!--{if $_G['uid'] == $space['uid']}-->我的回复<!--{else}-->TA的回复<!--{/if}--></a></li>
复制代码
2.后台 工具 > 更新缓存
-----------------
修复第2页跳转错误代码,加入 后台 > 全局 > 站点信息 > 网站第三方统计代码:
- 手机版第2页跳转BUG修复
- <script>
- // 修复Discuz手机版下拉分页(兼容板块列表 + 帖子内容页)
- document.addEventListener('DOMContentLoaded', function() {
- const dumpPage = document.getElementById('dumppage');
- if (!dumpPage) return;
- dumpPage.onchange = function() {
- const urlParams = new URLSearchParams(window.location.search);
- const page = this.value;
- const mobile = urlParams.get('mobile') || '2';
- const mod = urlParams.get('mod');
- let targetUrl = '';
- // 1. 帖子内容页 viewthread.php (带tid参数)
- if (mod === 'viewthread' || urlParams.get('tid')) {
- const tid = urlParams.get('tid');
- targetUrl = `https://bbs.wuyou.net/forum.php?mod=viewthread&tid=${tid}&page=${page}&mobile=${mobile}`;
- }
- // 2. 板块列表页 forumdisplay.php (带fid参数)
- else if (mod === 'forumdisplay' || urlParams.get('fid')) {
- const fid = urlParams.get('fid');
- targetUrl = `https://bbs.wuyou.net/forum.php?mod=forumdisplay&fid=${fid}&page=${page}&mobile=${mobile}`;
- }
- // 执行跳转
- if (targetUrl) {
- window.location.href = targetUrl;
- }
- };
- });
- </script>
复制代码
--------------------------
增加用键盘左右箭头翻页
修改 template/default/common/footer.php
在尾部</body>前增加
- <script type="text/javascript">
- document.onkeydown = function(e) {
- var t = e.srcElement || e.target;
- if (t.tagName && t.tagName.match(/input|textarea/i)) return;
- // 自动从 URL 获取当前页码
- var url = location.href;
- var page = 1;
- var pageMatch = url.match(/page=(\d+)/);
- if (pageMatch) page = parseInt(pageMatch[1]);
- var baseUrl = url.split(/[?&]page=\d+/)[0];
- var queryStr = url.indexOf('?') > -1 ? '&' : '?';
- // 左箭头 = 上一页
- if (e.keyCode == 37 && page > 1) {
- location.href = baseUrl + queryStr + 'page=' + (page - 1);
- }
- // 右箭头 = 下一页(沿用页面里的下一页链接,最稳)
- if (e.keyCode == 39) {
- var as = document.getElementsByTagName('a');
- for (var i = 0; i < as.length; i++) {
- if (as[i].innerHTML.indexOf('下一页') > -1) {
- location.href = as[i].href;
- break;
- }
- }
- }
- };
- </script>
复制代码
后台>工具 > 更新缓存
--------------------
凡是有被标记移动的帖子,出现在哪一列表页中,这一页就会出错。
修复方法如下:
source/app/forum/module/forumdisplay.php
677行,找到
改为
---------------------
修复:部分表fields json,没有设置默认{},实际值错误设置为空值,为不合格json数据,会影响后续数据库升级或数据导入。
- -- 对原库进行修复
- -- 批量修复表结构,设置默认值为{}
- ALTER TABLE pre_common_member_profile_archive MODIFY COLUMN fields json NOT NULL DEFAULT '{}';
- ALTER TABLE pre_common_member_profile_history MODIFY COLUMN fields json NOT NULL DEFAULT '{}';
- ALTER TABLE pre_common_usergroup_field MODIFY COLUMN fields json NOT NULL DEFAULT '{}';
- ALTER TABLE pre_forum_forumfield MODIFY COLUMN fields json NOT NULL DEFAULT '{}';
- ALTER TABLE pre_home_docomment MODIFY COLUMN fields json NOT NULL DEFAULT '{}';
- ALTER TABLE pre_home_doing MODIFY COLUMN fields json NOT NULL DEFAULT '{}';
- -- 批量修复空值 '' 为合法JSON {}
- UPDATE pre_common_member_profile_archive SET fields = '{}' WHERE fields = '' OR fields IS NULL;
- UPDATE pre_common_member_profile_history SET fields = '{}' WHERE fields = '' OR fields IS NULL;
- UPDATE pre_common_usergroup_field SET fields = '{}' WHERE fields = '' OR fields IS NULL;
- UPDATE pre_forum_forumfield SET fields = '{}' WHERE fields = '' OR fields IS NULL;
- UPDATE pre_home_docomment SET fields = '{}' WHERE fields = '' OR fields IS NULL;
- UPDATE pre_home_doing SET fields = '{}' WHERE fields = '' OR fields IS NULL;
复制代码
-------------------
代码中出现\会被吃掉一个的情况(已修复)
source/function/function_discuzcode.php- function codedisp($code) {
- global $_G;
- $_G['forum_discuzcode']['pcodecount']++;
- $code = dhtmlspecialchars(str_replace('\\"', '"', $code));
- $code = str_replace("\n", '<li>', $code);
- $_G['forum_discuzcode']['codehtml'][$_G['forum_discuzcode']['pcodecount']] = tpl_codedisp($code);
- $_G['forum_discuzcode']['codecount']++;
- return "[\tDISCUZ_CODE_".$_G['forum_discuzcode']['pcodecount']."\t]";
- }
复制代码
改为
- function codedisp($code) {
- global $_G;
- $_G['forum_discuzcode']['pcodecount']++;
- $code = dhtmlspecialchars($code);
- $code = str_replace("\n", '<li>', $code);
- $_G['forum_discuzcode']['codehtml'][$_G['forum_discuzcode']['pcodecount']] = tpl_codedisp($code);
- $_G['forum_discuzcode']['codecount']++;
- return "[\tDISCUZ_CODE_".$_G['forum_discuzcode']['pcodecount']."\t]";
- }
复制代码
实际只改一行
- $code = dhtmlspecialchars(str_replace('\\"', '"', $code));
复制代码
为
- $code = dhtmlspecialchars($code);
复制代码
修复代码标签中@ 不正常输出:
vi source/app/forum/extend/extend_thread_allowat.php
搜索
- preg_replace($atsearch, $atreplace, $parameters['message
复制代码 找到
- $this->param['message'] = preg_replace($atsearch, $atreplace, $parameters['message'].' ', 1);
复制代码 整行替换为
- // 修复:不替换 [code] 代码块内的 @
- $this->param['message'] = preg_replace_callback($atsearch, function($m) {
- return preg_match('#\[code.*?\].*?'.$m[0].'.*?\[/code\]#is', $GLOBALS['message']) ? $m[0] : $m[0];
- }, $parameters['message'].' ', 1);
复制代码
一共要替换三处,分别与发帖、回帖、编辑相关
|