discuz x1.5中将排行榜中用户排行下竞价排行、美女排行、及帅哥排行去掉,改成按人
近期接了一个小学网站的单子,可能出于教育及价值观的考虑,要求将排行榜中用户排行下竞价排行、美女排行、及帅哥排行去掉,改成按人气排列的用户排行。呵呵,感觉也没什么,言归正传,看代码。
先上一张图片,有个直观的理解。
本次修改的原则是尽量不改变原有的代码,如有冲突,将原来的部分代码注视掉,这样方便以后还原。
网址链接为:misc.php?mod=ranklist;type=member
根据代码分析后,得知:(ps:都在默认风格下,gbk版本)
模版文件:template/default/ranklist/member.htm
程序方面:source/module/misc/misc_ranklist.php 、 source/include/misc/misc_ranklist_member.php
在文件source/module/misc/misc_ranklist.php中将代码:
$query = DB::query("SELECT c.uid, c.views FROM ".DB::table('common_member_count')." c
LEFT JOIN ".DB::table('common_member_profile')." p ON c.uid=p.uid
WHERE c.views>0 AND p.gender = '$gender' ORDER BY c.views DESC LIMIT 0, $num");
替换成:
//--phper163,添加全部用户排行的代码
if(empty($gender)){
$query = DB::query("SELECT c.uid, c.views FROM ".DB::table('common_member_count')." c
LEFT JOIN ".DB::table('common_member_profile')." p ON c.uid=p.uid
WHERE c.views>0 ORDER BY c.views DESC LIMIT 0, $num");
}else{
$query = DB::query("SELECT c.uid, c.views FROM ".DB::table('common_member_count')." c
LEFT JOIN ".DB::table('common_member_profile')." p ON c.uid=p.uid
WHERE c.views>0 AND p.gender = '$gender' ORDER BY c.views DESC LIMIT 0, $num");
}
上面的代码作用就是获取到所有用户的排行,不按性别来区分。
在文件source/include/misc/misc_ranklist_member.php中将代码:
$navname = $_G['setting']['navs']['navname'];
$navtitle = lang('ranklist/navtitle', 'ranklist_title_member_bid').' - '.$navname;
$metakeywords = lang('ranklist/navtitle', 'ranklist_title_member_bid');
$metadescription = lang('ranklist/navtitle', 'ranklist_title_member_bid');
$cachetip = FALSE;
$_GET['view'] = 'show';
$creditid = 0;
if($_G['setting']['creditstransextra']) {
$creditid = intval($_G['setting']['creditstransextra']);
$creditkey = 'extcredits'.$creditid;
} elseif ($_G['setting']['creditstrans']) {
$creditid = intval($_G['setting']['creditstrans']);
$creditkey = 'extcredits'.$creditid;
}
$extcredits = $_G['setting']['extcredits'];
$count = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('home_show')." WHERE credit>0"),0);
$space = array();
if($count) {
$space = $_G['member'];
space_merge($space, 'count');
$space['credit'] = empty($creditkey) ? 0 : $space[$creditkey];
$myshowinfo = DB::fetch_first("SELECT unitprice, credit FROM ".DB::table('home_show')." WHERE uid='$space' AND credit>0");
$myallcredit = intval($myshowinfo['credit']);
$space['unitprice'] = intval($myshowinfo['unitprice']);
$now_pos = DB::result_first("SELECT COUNT(*) FROM ".DB::table('home_show')." WHERE unitprice>='$space' AND credit>0");
$deluser = false;
$query = DB::query("SELECT uid, username, unitprice, credit AS show_credit, note AS show_note FROM ".DB::table('home_show')." ORDER BY unitprice DESC, credit DESC LIMIT $start,$perpage");
while ($value = DB::fetch($query)) {
if(!$deluser ;; $value['show_credit']
注视掉,并在后面加上代码
//--phper163,按人气获取全部用户排行
function getranklistcache_common() {
global $_G, $cache_time, $cache_num;
$ranklistvars = array();
loadcache('ranklist_member');
$ranklistvars = ; $_G['cache']['ranklist_member']['common'];
if(!empty($ranklistvars['lastupdated']) ;; TIMESTAMP - $ranklistvars['lastupdated']
$ranklistvars = getranklist_member_gender(0,$cache_num);
$ranklistvars['lastupdated'] = TIMESTAMP;
$ranklistvars['lastupdate'] = dgmdate(TIMESTAMP);
$ranklistvars['nextupdate'] = dgmdate(TIMESTAMP + $cache_time);
$_G['cache']['ranklist_member']['common'] = $ranklistvars;
save_syscache('ranklist_member', $_G['cache']['ranklist_member']);
return $ranklistvars;
}
$navname = $_G['setting']['navs']['navname'];
$navtitle = '用户排行 - '.$navname;
$metakeywords = '用户排行';
$metadescription = '用户排行';
$_GET['view'] = 'common';
$list = getranklistcache_common();
$now_pos = -1;
上面代码作用是将原来默认为竞价排行调用改为用户排行调用。
在文件template/default/ranklist/member.htm中将代码
{lang auction_ranking}
{lang ranklist_beauty}
{lang ranklist_handsome}
替换成
用户排行
修改部分代码打包下载:ranklist_member
		页: 
[1]