지난달 게시글,코멘트,로그인 순위5위 표시 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

지난달 게시글,코멘트,로그인 순위5위 표시 정보

지난달 게시글,코멘트,로그인 순위5위 표시

본문

//Rank Top5 추출
function Rank5($skin_dir="", $rows=5, $subject_len=8, $options="")
{
    global $g4;
    global $g_id;
   
    $year = date("Y");
$month = date("m");
$day = date("d");

$tmp = mktime(0, 0, 0, $month - 1 , $day, $year, 0);
$lastmonth = date("Y-m",$tmp);

    if ($skin_dir)
        $skin_path = "$g4[path]/skin/top10/$skin_dir";
    else
        $skin_path = "$g4[path]/skin/top10/rank5";

    $Writelist = array();
    $Commentlist = array();
    $Visitlist = array();

//글쓰기 랭킹
$sql_common = " from  $g4[board_new_table] a, $g4[member_table] b "; //where mb_level < 10 ";
$sql_common = $sql_common . " where a.bn_datetime like '" . $lastmonth . "%' ";
$sql_common = $sql_common . " and a.mb_id <> ''";
$sql_common = $sql_common . " and a.wr_id = a.wr_parent ";
$sql_common = $sql_common . " and a.mb_id = b.mb_id ";
$sql_common = $sql_common . " and b.mb_level < 10 ";
$sql_order = " order by cnt desc ";


$sql = " SELECT b.mb_nick,count(*) cnt
          $sql_common
          group by b.mb_nick
          $sql_order
          limit 0,$rows";

    $result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{

    $Writelist[$i][mb_nick] = conv_subject($row[mb_nick], $subject_len, "..");
    $Writelist[$i][mb_cnt] = $row[cnt];
}

//코멘트 랭킹
$sql_common = " from  $g4[board_new_table] a, $g4[member_table] b "; //where mb_level < 10 ";
$sql_common = $sql_common . " where a.bn_datetime like '" . $lastmonth . "%' ";
$sql_common = $sql_common . " and a.mb_id <> ''";
$sql_common = $sql_common . " and a.wr_id <> a.wr_parent ";
$sql_common = $sql_common . " and a.mb_id = b.mb_id ";
$sql_common = $sql_common . " and b.mb_level < 10 ";
$sql_order = " order by cnt desc ";

$sql = " SELECT b.mb_nick,count(*)cnt
          $sql_common
          group by b.mb_nick
          $sql_order
          limit 0, $rows";

    $result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{

    $Commentlist[$i][mb_nick] = conv_subject($row[mb_nick], $subject_len, "..");
    $Commentlist[$i][mb_cnt] = $row[cnt];
}

//방문자 랭킹
$sql_common = " from  $g4[point_table] a, $g4[member_table] b "; //where mb_level < 10 ";
$sql_common = $sql_common . " where a.po_datetime like '" . $lastmonth . "%' ";
$sql_common = $sql_common . " and a.mb_id <> ''";
$sql_common = $sql_common . " and a.mb_id = b.mb_id ";
$sql_common = $sql_common . " and po_rel_table = '@login' ";
$sql_common = $sql_common . " and b.mb_level < 10 ";
$sql_order = " order by cnt desc ";

$sql = " SELECT b.mb_nick,count(*)cnt
          $sql_common
          group by b.mb_nick
          $sql_order
          limit 0, $rows";

    $result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{

    $Visitlist[$i][mb_nick] = conv_subject($row[mb_nick], $subject_len, "..");
    $Visitlist[$i][mb_cnt] = $row[cnt];
}
   
    ob_start();
    include "$skin_path/rank.skin.php";
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}

=======================================================================
여기까지가 함수 이구요...
=======================================================================

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>

<script>
function switchRank(code){
document.getElementById('wr').style.display = 'none';
document.getElementById('co').style.display = 'none';
document.getElementById('vi').style.display = 'none';
document.getElementById('btnwr').style.color = '#bbbbbb';
document.getElementById('btnco').style.color = '#bbbbbb';
document.getElementById('btnvi').style.color = '#bbbbbb';

document.getElementById(code).style.display = 'block';
code = 'btn'+code;
document.getElementById(code).style.color = '#333333';
}
</script>
<fieldset style="padding:3; border:1 solid #dddddd;">
<style type="text/css">
.Btn{
float:left;
width:32%;
text-align:center;
}
.RankContent{
clear:both;
border:.5pt solid #eeeeee;
}
.bg{
background:#eeeeee;
}
</style>

<table width="100%" cellspacing="0" cellpadding="0" style="table-layout:fixed">
<tr>
<td style="text-overflow:ellipsis;overflow:hidden;padding-left:2"><nobr>
<div class="Btn">
<b class="rtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
<div class="box" style="padding:0px"><a id="btnwr" onmouseover="javascript:switchRank('wr');" style="color:#333333"> 게시글 </a></div></div>
<div class="Btn" style="margin-left:3px;">
<b class="rtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
<div class="box" style="padding:0px"><a id="btnco" onmouseover="javascript:switchRank('co');" style="color:#bbbbbb"> 코멘트 </a></div></div>
<div class="Btn" style="margin-left:3px;">
<b class="rtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
<div class="box" style="padding:0px"><a id="btnvi" onmouseover="javascript:switchRank('vi');" style="color:#bbbbbb"> 출석 </a></div></div>
</td>
</tr>
</table>
<table id="wr" class="RankContent" width="100%" cellspacing="0" cellpadding="0" style="table-layout:fixed">
<? for ($i=0; $i<count($Writelist); $i++) { ?>
        <tr>
        <td width="50%" style="text-overflow:ellipsis;overflow:hidden;padding-left:2;border-bottom:.5pt dashed #eeeeee;"><nobr>
                          <div style='margin-left:10px;'> <? echo $Writelist[$i]['mb_nick']; ?> </div>
</td>
<td width="50%" style="text-align:right;text-overflow:ellipsis;overflow:hidden;padding-left:2;border-bottom:.5pt dashed #eeeeee;"><nobr>
              <div style="margin-right:10px;"> <? echo $Writelist[$i]['mb_cnt']; ?> </div>
              </td>
        </tr>
<? } ?>

</table>

<table id="co" class="RankContent" width="100%" cellspacing="0" cellpadding="0" style="table-layout:fixed;display:none;">

<? for ($i=0; $i<count($Commentlist); $i++) { ?>
        <tr>
        <td width="50%" style="text-overflow:ellipsis;overflow:hidden;padding-left:2;border-bottom:.5pt dashed #eeeeee;"><nobr>
                          <div style='margin-left:10px;'> <? echo $Commentlist[$i]['mb_nick']; ?> </div>
</td>
<td width="50%" style="text-align:right;text-overflow:ellipsis;overflow:hidden;padding-left:2;border-bottom:.5pt dashed #eeeeee;"><nobr>
              <div style="margin-right:10px;"> <? echo $Commentlist[$i]['mb_cnt']; ?> </div>
              </td>
        </tr>
<? } ?>


</table>

<table id="vi" class="RankContent" width="100%" cellspacing="0" cellpadding="0" style="table-layout:fixed;display:none;">

<? for ($i=0; $i<count($Visitlist); $i++) { ?>
        <tr>
        <td width="50%" style="text-overflow:ellipsis;overflow:hidden;padding-left:2;border-bottom:.5pt dashed #eeeeee;"><nobr>
                          <div style='margin-left:10px;'> <? echo $Visitlist[$i]['mb_nick']; ?> </div>
</td>
<td width="50%" style="text-align:right;text-overflow:ellipsis;overflow:hidden;padding-left:2;border-bottom:.5pt dashed #eeeeee;"><nobr>
              <div style="margin-right:10px;"> <? echo $Visitlist[$i]['mb_cnt']; ?> </div>
              </td>
        </tr>
<? } ?>


</table>

</fieldset>


======================================================================
요기가 rank.skin.php 입니다...
======================================================================

사용법은

<? echo Rank5("rank5", 5, 8, ""); ?>
입니다.


그냥 함 만들어 봤는데 맞는지 어쩌는지 모르겠네요...


http://www.momnpapa.com/
여기에 지난달 rank5 위치입니다.
활성화가 많이 안되어 있어서...ㅎㅎ
추천
4
  • 복사

댓글 11개

파아란기쁨님, 좋은 소스(팁)를 공개해 주셔서 감사드립니다.

비슷한 기능이 필요해서 만들고 있는 중인데....

많은 참고가 되겠네요. ^^

감사드립니다.
혹시 이 소스의 정확한 사용방법을 알 수 있을까요?
파아란기쁨님한테는 쪽지가 전달이 안돼서..
무척 쓰고 싶은 소스중 하나인데 사용방법을 몰라 적용을 못하고 있습니다 ㅎㅎ
함수 부분을 어떻게 처리해야 하는지 스킨을 스킨 폴더에 Rank5폴더 만들어서 올리는 건지..
모르니까 손발이 무척 답답하네요 쩝.ㅎㅎ
1. php파일 만듭니다- 함수부분("여기까지가 함수 이구요" 그 위부분 소스)을 쭉 복사해서 <? 와 ?> 사이에 붙여넣으시면 돼요.
2. 대충 이름을 붙인다음(예:rankrank.php) 그누보드 extend 폴더에 업로드 하세요.
4. skin 폴더안에 top10이라는 폴더를 만드세요.
5. top10폴더안에 rank5라는 폴더를 만드세요.
6. rank.skin.php 파일을 만들고 "여기까지가 함수 이구요" 아래부분 소스를 복사해서 저장하세요.
7. 아까 만든 rank5폴더안에 rank.skin.php 파일을 집어 넣습니다.
8. 메인에 삽입하고 싶으시면 index.php 열어 적절한 곳에 <? echo Rank5("rank5", 5, 8, ""); ?> 삽입 끝입니다~ ^^
스타두리비님 감사드립니다 ^^
상세한 설명 덕분에 조금 더 쉽게 이해하였습니다..
게다가 대소문자까지 구별을 해서 넣어야하더군요..ㅎㅎ
머리가 무식하면 손발이 고생이라고.. 그래도 이렇게 해결할 수 있어서 다행입니다..

혹시 지난 한달 부분을 지난 보름이나 지난 일주일이나..
그렇게 바꾸려면 어떤 방법이 있는지 알 수 있을까요?

    $year = date("Y");
$month = date("m");
$day = date("d");

$tmp = mktime(0, 0, 0, $month - 1 , $day, $year, 0);
$lastmonth = date("Y-m",$tmp);

이 부분에서 $tmp = mktime(0, 0, 0, $month - 1 , $day, $year, 0);  대신
$tmp = mktime(0, 0, 0, $month, $day - 7 , $year, 0); 이렇게 하면 될까요?
아님 다른 함수를 정의해야 하나요?
© SIRSOFT
현재 페이지 제일 처음으로