论坛BUG反馈专帖,发现新版论坛问题,在这里说
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);
var baseUrl = url.split(/[?&]page=\d+/);
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.innerHTML.indexOf('下一页') > -1) {
location.href = as.href;
break;
}
}
}
};
</script>
后台>工具 > 更新缓存
--------------------
凡是有被标记移动的帖子,出现在哪一列表页中,这一页就会出错。
修复方法如下:
source/app/forum/module/forumdisplay.php
677行,找到
$thread['views'] = '-'
改为
$thread['views'] = 0
---------------------
修复:部分表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.phpfunction 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);整行替换为
// 修复:不替换 代码块内的 @
$this->param['message'] = preg_replace_callback($atsearch, function($m) {
return preg_match('#\.*?'.$m.'.*?\#is', $GLOBALS['message']) ? $m : $m;
}, $parameters['message'].' ', 1);
一共要替换三处,分别与发帖、回帖、编辑相关
手机版问题有点大。
https://bbs.wuyou.net/forum.php?mod=attachment&aid=NTczMDM5fGNmNGViN2MzfDE3NzQwNDgxMjV8ODc2MTY4fDQ1MDE2NQ%3D%3D&noupdate=yes
就是我的电脑看不全(1024 768 32)
yyz2191958 发表于 2026-3-21 07:09
就是我的电脑看不全(1024 768 32)
分辨率太低,这个目前无解。 wuyou 发表于 2026-3-21 07:10
分辨率太低,这个目前无解。
谢谢解答 俪尚皇 发表于 2026-3-21 07:28
顶部diskgenius广告图要拉大点 应该是1200的宽才和论坛等宽
广告图宽度确实有些不和谐。 201 发表于 2026-3-21 07:51
@wuyou 要是给论坛安装插件、模板和小程序应用的话,论坛功能还会更多
插件给后续的升级会造成不必要的麻烦,一般不考虑。 加油 yyz2191958 发表于 2026-3-21 07:09
就是我的电脑看不全(1024 768 32)
ctrl+- nttwqz 发表于 2026-3-21 08:19
ctrl+-
这个我晓得,就是有一点麻烦 我这一切正常,没什么不同之处。分辨率1600x1200 我的正常! 上面有些长标题的显示不了,估计 是我分辨率低。 wonderfully 发表于 2026-3-21 08:34
上面有些长标题的显示不了,估计 是我分辨率低。
这是个BUG,估计程序断字不好,没有正确识别。 页面的宽窄切换有问题…… nttwqz 发表于 2026-3-21 08:19
ctrl+-
謝謝分享,非常感謝您! 正常,暂未发现问题 正常,暂未发现问题 修改权限后,测试上传
本帖最后由 wangyibin 于 2026-3-21 09:27 编辑
重大BUG 致命BUG 捐助的账号太少 升级好啊 暂时没发现什么,比之前好很多。 martin313 发表于 2026-3-21 09:47
查看自己的最新回复,在回复列表中,最新回复的排序不在最上面,查找起来麻烦。我指的是附图中的这个位置, ...
我看到的最新回复是在最上方
论坛上传图片的格式要不要也支持下webp这种格式,毕竟体积更小
测试一下上传图片,看看会不会转成webp图片文件?
本帖最后由 201 于 2026-3-21 15:28 编辑
@wuyou 应该按照这个帖子进行升级
