·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹📱AI全功能
返回列表 发布新帖

倒序查看时楼主楼层号显示异常(X3.5应该也存在)

[复制链接]
98 0
发表于 2026-9-8 14:28:56 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
倒序查看时楼主楼层号显示异常(X3.5应该也存在) Discuz,楼主,显示,倒序,查看,楼层



上图是正序浏览时,显示楼主!
倒序查看时楼主楼层号显示异常(X3.5应该也存在) Discuz,楼主,显示,倒序,查看,楼层



上图是倒序浏览时,楼主变#
倒序查看帖子(ordertype=1)第 1 页时,楼主楼层号只显示 "楼" 字,缺少 "楼主"
影响版本
Discuz! X5.0  X3.5

问题描述
当帖子按倒序排列(`ordertype=1`)且在第 1 页时,楼主帖子的楼层号位置只显示 "楼" 字,而不是正常的 "楼主"。正序查看时无此问题。

复现步骤
    打开一个有回帖的帖子点击 "倒序查看" 切换到倒序模式观察楼主帖子的楼层号,显示为 "楼" 而非 "楼主"

根本原因
source/app/forum/child/viewthread/postarr.php中代码执行顺序错误:
  1. // 第109-112行:先生成当前页帖子ID列表$curpagepids = [];foreach($postarr as $post) {    $curpagepids[] = $post['pid'];}// 第113-119行:然后才把楼主添加到postarrif($page == 1 && $ordertype == 1) {    $firstpost = table_forum_post::t()->fetch_threadpost_by_tid_invisible($_G['tid']);    if($firstpost['invisible'] == 0 || $visibleallflag == 1) {        $postarr = array_merge([$firstpost], $postarr);    }}
复制代码
楼主是在 $curpagepids`生成之后才被加入`$postarr`的,导致楼主 pid 不在 $curpagepids 中。
后续在 viewthread.php的 viewthread_procpost()函数中:
  1. $post['incurpage'] = in_array($post['pid'], $curpagepids); // 楼主为falseif(empty($post['hotrecommended']) && $post['incurpage']) {    $post['number'] = $post['first'] == 1 ? 1 : --$_G['forum_numpost']; // 不执行}
复制代码
楼主incurpage=false,楼层号 number不被计算,保持默认值 0。
模板 viewthread_node.php 中:
  1. <!--{if !empty($postno[$post[number]])}-->    $postno[$post[number]]       <!-- $postno[0]为空,走else --><!--{else}-->    <em>{$post[number]}</em>{$postno[0]}  <!-- 只显示"楼" --><!--{/if}-->
复制代码
修复方案
将楼主帖子的添加逻辑移到`$curpagepids 生成之前。

修改文件
source/app/forum/child/viewthread/postarr.php

修改前
  1. $summary = '';$curpagepids = [];foreach($postarr as $post) {    $curpagepids[] = $post['pid'];}if($page == 1 && $ordertype == 1) {    $firstpost = table_forum_post::t()->fetch_threadpost_by_tid_invisible($_G['tid']);    if($firstpost['invisible'] == 0 || $visibleallflag == 1) {        $postarr = array_merge([$firstpost], $postarr);        unset($firstpost);    }}
复制代码
修改后
  1. $summary = '';if($page == 1 && $ordertype == 1) {        $firstpost = table_forum_post::t()->fetch_threadpost_by_tid_invisible($_G['tid']);        if($firstpost['invisible'] == 0 || $visibleallflag == 1) {                $postarr = array_merge([$firstpost], $postarr);                unset($firstpost);        }}$curpagepids = [];foreach($postarr as $post) {        $curpagepids[] = $post['pid'];}
复制代码
仅影响倒序查看第 1 页时楼主楼层号的显示,不影响其他功能和正序查看。
PR已提交:https://gitee.com/Discuz/DiscuzX/pulls/2642
注意,任何非官方的解决方案都存在风险,所以仅供参考,愿意尝试就试试。
不愿尝试,您就权当看个热闹。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 ) 知道创宇云防御

您的IP:216.73.216.227(美国),GMT+8, 2026-11-5 06:07 , Processed in 1.050275 second(s), 45 queries , Gzip On, Redis On.

Powered by Discuz! X5.1 Licensed

© 2001-2026 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表