作者amaki.bbs@luna.twbbs.org (巧克力羊) 看板: plan
標題[功能]看板列表/分類列表即時依看板人氣排序
時間月下夜想 (2003/12/31 Wed 12:45:13) Updated: 2006/02/23
※ 引述《Efen.bbs@backwind.g1.dorm.ncku.edu.tw (,,,,,,)》之銘言:
> ptt的即時熱門看版有辦法弄嗎?
要改這個你要有做看板人氣的程式。
然後建一個分類叫 HOT,裡面隨便放入一個看板 (因為沒有看板的分類不會出現)
: board.c:mantime_cmp() 在class_load()前加上這支函式
static int
mantime_cmp(a, b)
short *a;
short *b;
{
/* 由多排到少 */
return bshm->mantime[*b] - bshm->mantime[*a];
}
: board.c:class_load()
+ static int class_hot = 0;
static int
class_load(xo)
XO *xo;
{
short *cbase, *chead, *ctail;
int chn; /* ClassHeader number */
+ int bnum = 0;
......
......
do
{
chn = *chead++;
if (chn >= 0) /* 一般看板 */
{
val = bits[chn];
if (!(val & BRD_L_BIT) || (val & zap) || !(brd[chn].brdname[0]))
continue;
// 10這個臨界值自定
+ if (class_hot)
+ {
+ if (bshm->mantime[chn] < 10) /* 只列出人氣超過 10 的看板 */
+ continue;
+ bnum++;
+ }
}
......
......
max++;
*cbase++ = chn;
} while (chead < ctail);
+ if (bnum > 0)
+ qsort(cbase - bnum, bnum, sizeof(short), mantime_cmp);
xo->max = max;
if (xo->pos >= max)
xo->pos = xo->top = 0;
: board.c:class_browse()
chp = (short *) xo->xyz + xo->pos;
chn = *chp;
if (chn < 0) /* 進入分類 */
{
+ short *chx;
+ char *img, *str;
+ img = class_img;
+ chx = (short *) img + (CH_END - chn);
+ str = img + *chx;
// "HOT/" 名稱可自定,若改名也要順便改後面的長度 4
+ if (!strncmp(str, "HOT/", 4))
+ {
+ class_hot = 1;
+ chn = CH_END;
+ }
if (!XoClass(chn))
return XO_NONE;
+ if (class_hot)
+ class_hot = 0; /* 離開 HOT Class 再清除 class_hot 標記 */
}
--
Origin: luna.twbbs.org