Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

调用会员今日发帖排行之BUG修复。

[复制链接]
taihom 发表于 2010-7-21 14:18:47 | 显示全部楼层 |阅读模式
本帖最后由 taihom 于 2010-7-21 15:09 编辑

写这个之前,我也遇到了论坛上众多站长提出的这个问题,这个问题从5月份一直在官方网站提出,然后下砂说已经记录,6月X的正式版本也没修复,到了现在7月低,一直都没解决。我实在不知道,为什么官方会这么久不解决这个问题?找了两三天了都没一个可行的解决办法!
这个问题实在是不难解决的吧?
我升级到X1后,对新的DZ结构不是很熟悉,花了点时间读读代码后,决定自己动手修复这个BUG。
现在已经找到原因了。官方的查询代码是:

SELECT m . * , mc . *
FROM molihua_common_member_count mc
LEFT JOIN molihua_common_member m ON mc.uid = m.uid
LEFT JOIN molihua_common_member_status ms ON m.uid = ms.uid
WHERE ms.lastpost > '1279602038'
ORDER BY mc.posts DESC
LIMIT 0 , 10

这个怎么可能是今日发帖排行嘛??真是想不明白了!
正确的查询应该是:
SELECT m.*,count(mp.pid) as posts,sum(mp.first) as threads,mc.*
FROM `molihua_forum_post` mp LEFT JOIN molihua_common_member m ON mp.authorid=m.uid
LEFT JOIN molihua_common_member_count mc ON mc.uid = m.uid
Where Dateline>'1279602038' Group by mp.authorid Order by Count(mp.pid) Desc
LIMIT 0 , 10

我现在还在修改测试代码,等下弄好了放出来给大家。

顺便贴出我的坛子:http://hx.gx.cn

我不解的是你官方不解决你也要有一个态度吧?自己没这么多精力解决,那悬赏让广大网友来做行不行?

代码修复如下:
在source\class\block\block_member.php 第 147行左右,找到
case 'posts':
把里面的
$query = DB::query("SELECT m.*, mc.* FROM $tablesql2 WHERE $sqllastpost $sqlgroupid $sqlban ORDER BY mc.posts DESC LIMIT $startrow, $items");
这一行替换成下面的代码,更新一下缓存,既可。
  1.                                         $exesql = "SELECT m.*, mc.* FROM $tablesql2 WHERE $sqllastpost $sqlgroupid $sqlban ORDER BY mc.posts DESC LIMIT $startrow, $items";

  2.                                         $fields = 'm.*,count(mp.pid) as posts,sum(mp.first) as threads,mc.extcredits1,mc.extcredits2,mc.extcredits3,mc.extcredits4,mc.extcredits5,mc.extcredits6,mc.extcredits7,mc.extcredits8,mc.friends,mc.digestposts,mc.doings,mc.blogs,mc.albums,mc.sharings,mc.attachsize,mc.views';
  3.                                        
  4.                                         $tablesql = DB::table('forum_post')." as mp LEFT JOIN ".DB::table('common_member')." as m ON mp.authorid=m.uid LEFT JOIN ".DB::table('common_member_count')." as mc ON mc.uid = m.uid ";
  5.                                        
  6.                                         if($lastpost) {//if have lastpost
  7.                                                 $time = TIMESTAMP - $lastpost;
  8.                                                 $where = " mp.Dateline>'$time' ";
  9.                                                 $exesql = "SELECT $fields FROM $tablesql WHERE $where Group by mp.authorid Order by Count(mp.pid) Desc LIMIT $startrow, $items";
  10.                                         }
  11.                                        
  12.                                         $query = DB::query($exesql);
复制代码
不知道怎么样修改的,或者下载一下附件,覆盖一下
source\class\block\block_member.php

评分

3

查看全部评分

qiewbb 发表于 2010-7-21 14:19:50 | 显示全部楼层
嗯,等待解决
回复

使用道具 举报

neol123 发表于 2010-7-21 14:38:36 | 显示全部楼层
官方不解决  

可见 他开发程序的态度是。。。。
回复

使用道具 举报

小木心 发表于 2010-7-21 14:54:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| taihom 发表于 2010-7-21 15:06:57 | 显示全部楼层
已经修复。修改后的代码已经附件到论坛。替换一下就可以了
回复

使用道具 举报

mszj54tc 发表于 2010-7-22 08:41:30 | 显示全部楼层
不明白```围观
回复

使用道具 举报

3583101io 发表于 2010-7-22 09:20:47 | 显示全部楼层
我没出现过。
回复

使用道具 举报

artsharp 发表于 2010-7-22 10:02:38 | 显示全部楼层
测试下   谢谢LZ
回复

使用道具 举报

artsharp 发表于 2010-7-22 10:08:52 | 显示全部楼层
经过测试  正常了!!
回复

使用道具 举报

45578800 发表于 2010-7-22 10:11:14 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-9-21 13:50 , Processed in 0.128001 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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