최신글 공지사항을 최상위,상위,위에 노출하는 latest 함수 > 그누4 팁자료실

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누4 팁자료실

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

최신글 공지사항을 최상위,상위,위에 노출하는 latest 함수 정보

최신글 공지사항을 최상위,상위,위에 노출하는 latest 함수

본문

그누5 버전 : https://sir.kr/g5_tip/7172

최신글 공지사항을 최상위,상위,위에 노출하는 latest 함수입니다.

다른건 약간에 버그가 있는것 같아, 제가 만들어 봤습니다.

만약 게시판 글이 2개만 있는데 둘다 공지사항글이 2개 일시, 리스트에 4개가 노출됩니다.

그러면 최신글에도 4개가 노출되던데 그 버그 수정하여 올렸습니다.

latest 함수는 latest_notice 이므로 사용하시고자 하신는분들은

함수호출시

<?=latest_notice("basic","free",5,20) ?>

위와같이 함수호출명만 변경하시면 됩니다.


아래의 코드는 /lib/latest.lib.php에 기존거 지우지마시고 밑에다가 추가로 넣어주시면됩니다.



<?

// 공지글이 최상단에 노출
function latest_notice($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
    global $g4;

    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 * from $g4[board_table] where bo_table = '$bo_table'";
    $board = sql_fetch($sql);
	
    $tmp_write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
    //$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
    // 위의 코드 보다 속도가 빠름

		$arr_notice = explode("\n", trim($board[bo_notice]));

		$str_notice = implode("','",$arr_notice);
		$str_notice = "'".$str_notice."'";
		$sql_search = "";
		if(count($str_notice) > 0){
			$sql_search = " and wr_id not in ($str_notice) ";
		}

    $sql = " select * from $tmp_write_table where wr_is_comment = 0 $sql_search order by wr_num limit 0, $rows ";
    //explain($sql);
    $result = sql_query($sql);

		$i = 0;
    for ($k=0; $k<count($arr_notice); $k++)
    {
        if (trim($arr_notice[$k])=='') continue;

        $row = sql_fetch(" select * from $tmp_write_table where wr_id = '$arr_notice[$k]' ");

        if (!$row[wr_id]) continue;

        $list[$i] = get_list($row, $board, $latest_skin_path, $board[bo_subject_len]);
        $list[$i][is_notice] = true;

        $i++;
    }
		
		while ($row = sql_fetch_array($result)){
			if($i > $rows){
				break;
			}
			$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
			$i++;

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

    return $content;
} 

?>
추천
1

댓글 2개

전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT