找回密码
 立即注册
快捷导航

php8中,chs_tiebalist 和 freeaddon_forumdisplay_rate 插件冲突 和 解决办法

[复制链接]
dlsite 2023-6-16 09:05:16 | 显示全部楼层

环境:php8

冲突插件: 仿贴吧主题列表 2.20商业版 (chs_tiebalist) + 帖子列表显示评分 1.2.2  (freeaddon_forumdisplay_rate)

起因:当某个帖子评分了上传了图片,如果 仿贴吧主题列表插件 对这个帖子所在的板块功能关闭后,这个帖子所在板块的帖子列表页面就会报错:

php8中,chs_tiebalist 和 freeaddon_forumdisplay_rate 插件冲突 和 解决办法5705 作者:dlsite 帖子ID:260

原因:因为这两个插件都用到了对帖子列表的hook点(forumdisplay_thread_subject_output)设置,而 仿贴吧主题列表 插件的这个hook点设置因为对板块功能关闭后,代码返回的是 return;  ,会进入 $_G['setting']['pluginhooks'][$hookkey] = '';(source/function/function_core.php) 设置为空,导致下个循环处理 帖子列表显示评分 hook 之后,$_G['setting']['pluginhooks'][$hookkey][$k] = $v; 报错(PHP7 正常),$_G['setting']['pluginhooks'][$hookkey] 会取到空字符串,而又错误地在空字符串上使用数组索引下标赋值,导致报错;

解决思路:修正 仿帖子主题列表 这个插件的 forumdisplay_thread_subject_output 拦截点对关闭的板块,返回 空数组而不是空;
解决步骤:打开 /source/plugin/chs_tiebalist/chs_tiebalist.class.php 找到 forumdisplay_thread_subject_output ,下一句的 if (!$this->enabled) return; 改为 if (!$this->enabled) return array();

当然,如果想追求完美,那么这个php文件里其他hook拦截点也适当改掉这个不规范写法(因为没报错就懒得改其他地方了)

评分

参与人数 1金钱 +100 资源 +1 收起 理由
admin + 100 + 1 很给力!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

温馨提示

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

Archiver|手机版|小黑屋|DLSite

GMT+8, 2024-11-21 23:41

Powered by Discuz! X3.5 and PHP8

快速回复 返回顶部 返回列表