UseModWiki소스수정/MostPopular매크로 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/MostPopular매크로 는 읽기 전용 페이지입니다.
== MostPopular 매크로 == * 페이지들을 조회수에 의해 정렬하여 출력하는 매크로 * 필수 요구 사항: ** [[/페이지카운터]] 패치가 적용되어야 의미가 있음 * 선택 요구 사항: 없음 * 사용법 : <mostpopular(시작순위,끝순위)> ** 시작순위와 끝순위는 0 이 아닌 정수로 주어야 한다. ** 1 은 가장 조회수가 높은 페이지, 2 는 두번째로 높은 페이지, -1 은 가장 낮은 페이지, -2 는 두번째로 낮은 페이지... ** 시작순위 또는 끝순위가 전체 페이지 갯수의 범위를 넘어설 경우에는 전체 페이지를 출력한다. * 예 ** (1,10) - 조회수 1위부터 10위까지 조회수의 내림차순 정렬 ** (10,1) - 조회수 1위부터 10위까지 조회수의 올림차순 정렬 ** (-1,-10) - 조회수 꼴등부터 끝에서 10등까지 조회수의 올림차순 정렬 ** (-10,-1) - 조회수 끝에서 10등부터 꼴등까지 조회수의 내림차순 정렬 ** MostPopular 참조 : wiki.pl {{{#!vim perl sub MacroSubst { ... ###
$txt =~ s/(\&__LT__;mostpopular\(([-+]?\d+),([-+]?\d+)\)\&__GT__;)/&MacroMostPopular($1,$2, $3)/gei; ### ############### return $txt; } }}} : 다음 함수를 통채로 추가 : 아래에 보면 "$#pages ... " 로 된 부분이 # 이후부터 주석인 것처럼 표시되어 있는데.. 주석이 아니니 반드시 입력해 주어야 한다 {{{#!vim perl ### 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); if ($status) { $pgcount{$page} = $count; } else { $pgcount{$page} = 0; } } @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}) . ")
"; } return $txt; } }}} === Notes === 패치를 적용한 직후에 한 번도 카운터가 증가하지 않아 카운터 저장 화일이 만들어지지 않은 페이지의 경우 제대로 소팅되지 않는 것을 발견했습니다. 변경내역을 보면서 수정하세요.
---- [[위키위키분류]]
UseModWiki소스수정/MostPopular매크로
페이지로 돌아가기 |
다른 수정본 보기