[첫화면으로]UseModWiki소스수정/MostPopular매크로

마지막으로 [b]

3 번째 수정본

MostPopular 매크로

wiki.pl
sub MacroSubst {
    ...
### <MostPopular(시작, 갯수)>
    $txt =~ s/(\&__LT__;mostpopular\(([-+]?\d+),([-+]?\d+)\)\&__GT__;)/&MacroMostPopular($1,$2, $3)/gei;
###
###############
    return $txt;
}

다음 함수를 통채로 추가
아래에 보면 "$#pages ... " 로 된 부분이 # 이후부터 주석인 것처럼 표시되어 있는데.. 주석이 아니니 반드시 입력해 주어야 한다
### MostPopular
sub MacroMostPopular {
    my ($itself, $start, $end) = (@_);
    my (%pgcount, $page, $countfile, $status, $count, @pages);
    my $txt;

    if (($start == 0) || ($end == 0)) { return $itself; }

    foreach $page (&AllPagesList()) {
        $countfile = &GetCountFile($page);
        ($status, $count) = &ReadFile($countfile);
        $pgcount{$page} = $count if ($status);
    }

    @pages = sort {
        $pgcount{$b} <=> $pgcount{$a}
                ||
        $a cmp $b
    } keys %pgcount;

    if ($start > 0) {
        $start--;
    } else {
        $start = $#pages + $start + 1;
    }
    if ($end > 0) {
        $end--;
    } else {
        $end = $#pages + $end + 1;
    }
    $start = 0 if ($start < 0);
    $start = $#pages if ($start > $#pages);
    $end = 0 if ($end < 0);
    $end = $#pages if ($end > $#pages);
    if ($start <= $end) {
        @pages = @pages[$start .. $end];
    } else {
        @pages = reverse(@pages[$end .. $start]);
    }

    foreach $page (@pages) {
        $txt .= ".... "  if ($page =~ m|/|);
        $txt .= &GetPageLink($page) .
            " (".Ts('%s hit'.(($pgcount{$page}>1)?'s':''), $pgcount{$page}) . ")<br>";
    }

    return $txt;
}


위키위키분류

이 수정본 편집일: 2003-3-8 10:31 am (변경사항 [d])
1581 hits | Permalink | 변경내역 보기 [h] | 현재 수정본 보기 | 3 번째 수정본 소스 보기