기간제 그룹 인기게시물 > 그누4 팁자료실

그누4 팁자료실

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

기간제 그룹 인기게시물 정보

기간제 그룹 인기게시물

본문

필요해서 만든 짜집기 소스입니다.

출력은 그림을 참조하시면 되겠으며 extend 폴더에 업로드 하시고 사용하시면 별도로 호출을 할 필요는 없습니다.


이하 소스 ##############################

<?
if (!defined('_GNUBOARD_')) exit;
/*
지정 기간제 히트순 최근 게시물 출력함수
By izen (2006-09-09)

기존에 rolo님과 시리어스 F님이 공개한 함수를 이용하였다.
그룹 인기게시물 함수를 이용하여 인기 게시물을 출력하는데 있어서 약간의 문제가 발생하였다.
그래서 인기게시물을 출력하는데 있어서 등록 기간을 제한할 필요가 있어,
시리어스 F님의 함수중 기간을 지정하는 부분의 소스를 참조하여
나름데로 문제가 되던 부분을 해결할 수가 있었다.

ㅠㅠ; 내는 맨날 빼끼기만 해~~~

사용방법 :
include_once("{$g4[path]}/lib/izen_best.lib.php");
echo izen_best('최신글 스킨명', '그룹아이디', 출력갯수, 글자길이, 기간);

rolo님의 그룹별 히트순 인기게시물 추출
http://www.sir.co.kr/bbs/tb.php/g4_tiptech/5401

시리어스 F님의 기간제 인기게시물 팁과 함께 수정
http://www.sir.co.kr/bbs/tb.php/g4_tiptech/2604
*/

function cmp($a, $b)
{
return $b['wr_hit'] - $a['wr_hit'];
}

// 최신글 추출
function izen_best($skin_dir="", $gr_id, $rows=10, $subject_len=40, $listdate)
{
global $g4;
$nowYmd = date(Ymd); # 시작시간을 구합니다.
$time = time();
$startYmd = date("Ymd",strtotime("-".$listdate." day", $time));

if ($skin_dir)
{
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
}
else
{
$latest_skin_path = "$g4[path]/skin/latest/basic";
}

$list = array();

$sql= "select bo_table from {$g4['board_table']} where gr_id='$gr_id'";
$ress = sql_query($sql);
for($i=0, $ii=0; $board=sql_fetch_array($ress); $ii++)
{
$tmp_write_table = $g4['write_prefix'] . $board['bo_table']; # 게시판 테이블 전체이름
$sql = "select * from `$tmp_write_table` where wr_is_comment <> '1' and  date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' order by wr_hit desc limit 0, $rows ";
# 그룹 전체 게시물에서 코멘트는 제외하고 지정된 날짜 만큼만 위에서 하나씩 조회수가 높은 순으로 출력하라!
$result = sql_query($sql);
# for (; $row=sql_fetch_array($result); $i++) # *오류* 전체 게시물 가운데 날짜에 상관없이 히트순으로 지정한 갯수만큼 출력된다.
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len, $listdate);
}
}
usort( $list, 'cmp');
$list= array_slice($list, 0, $rows);

ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();

return $content;
}
?>


../skin/latest/거시기 폴더/latest.skin.php
<?
if (!defined("_GNUBOARD_")) exit;

/*
By izen. 2006-09-09
인기 게시물 출력 스킨
lib 폴더에 업로드 했을경우에는 아래처럼 부르면 됩니다.
include_once("{$g4[path]}/lib/izen_best.lib.php");
*/
?>
<table width="100%" cellpadding="0" cellspacing="5" bgcolor="#f8f8f8" style="border:1px solid #f2f2f2;">
<tr>
<td valign="top">
<table width="100%" cellpadding="0" cellspacing="5" bgcolor="#fefefe" style="border:1px solid #e1e1e1;">
<tr>
<td>
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td height="22"><span style="color:#cc3300; font-weight:bold;"><?=$listdate?>일간의 베스트 게시물 TOP 10</span></a></td></tr>
<tr><td height="1" bgcolor="#e1e1e1"></td></tr>
<tr><td height="3"></td></tr>
<?
for ($i=0; $i<count($list); $i++)
{
echo "<tr><td height=\"20\">";
echo "<a href='{$list[$i]['href']}'>";
echo "<span style=\"color:#656565;\">{$list[$i]['subject']}</span>";
echo "</a>";

if ($list[$i]['comment_cnt'])
{
echo " <a href=\"{$list[$i]['comment_href']}\"><span style=\"font-family:돋움; font-size:8pt; color:#9A9A9A;\">{$list[$i]['comment_cnt']}</span></a>";
}
echo "</td></tr>";
} # for

if (count($list) == '0')
{
echo "<tr><td align=\"center\" height=\"50\"><font color=\"#6A6A6A\">게시물이 없습니다.</a></td></tr>";
}
?>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
추천
3
  • 복사

댓글 14개

응용을 하셨다는 것은,
최소한 원본 소스가 의미하는 것을 이해하려 노력하셨다는 것이고,
그것을 통해 새로운 산물을 재창조했다는 데 있습니다.

재창조의 과정은
피드백을 만나보기 어려운 시기에
원제작자나 여러 유저들께 힘을 주는 내용이 됩니다.

고생하셨습니다.
감사합니다. 잘사용하겠습니다.

전체그룹에서 쓰는것이 필요해서 약간 바꾸어 보았습니다.

sql 구문만 약간 바꾸어 보아습니다.

---------------------------- 원본 ---------------------------------------------------------------------
$sql= "select bo_table from {$g4['board_table']} where gr_id='$gr_id'";

---------------------------- 수정 ---------------------------------------------------------------------
    //그룹값 있으면 해당그룹, 없으면 전체그룹
    if (!empty($gr_id))
        $sql_common .= "where bo_use_search = '1' and gr_id='$gr_id'";
    else
        $sql_common .= "where bo_use_search = '1'";

  $sql= "select bo_table from {$g4['board_table']} $sql_common ";
우선 좋은 스킨 공개 해주셔서 감사드립니다.
해당 그룹내에서 정해진 기간안에 히트가 많은 글을 추출하는 소스 맞죠??
그런데 제대로 동작을 안하는것 같은데요..
소스 그대로 가져다 붙여 넣었습니다. 기간을 30일 줬는데..
30일안에 다른 히트순이 많은 게시글 있는데..
왜 엉뚱한 게시물 히트수 3개 밖에 안되는 글이 추출될까요??
© SIRSOFT
현재 페이지 제일 처음으로