그룹내 특정게시물 최신글에 나오게 하기

그룹내 특정게시물 최신글에 나오게 하기

QA

그룹내 특정게시물 최신글에 나오게 하기

본문

그룹내 작성된 게시물엔 wr_1을 이용해서 최신글에 노출이라는 옵션을 넣어 "1"값을 입력하게 해 놓았습니다.

 

최신글에서 나오게 할려면 어떻게 해야하는지 도움 좀 부탁드립니다. ^^

 

 

아래 소스를 이용하고 있습니다.

 

 

 

<?

if (!defined('_GNUBOARD_')) exit;

/*------------------------------------------------------------------------------------------------

  배열을 이용해 특정 게시판에서 최신글 뽑아오기 - 라이브러리

  작성자 : 휴온 박성광

  수정일 : 2008.10.02

  http://www.huon.kr

------------------------------------------------------------------------------------------------*/

 

// 최신글 추출

function arr_new($skin_dir="", $board_arr=array(), $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();

    $board_list = array();

 

    //검색조건

    if(count($board_arr)>0){

   $qry_bo_search=" bo_table in(";

   for($i=0; $i<count($board_arr); $i++) {

   $bo_table=$board_arr[$i];

   $qry_bo_search .= "'$bo_table'";

   if($i<count($board_arr)-1) $qry_bo_search .= ", ";

   }

$qry_bo_search .= ")";

} else {

$qry_bo_search="(1)";

}

 

//echo $qry_bo_search;

 

//new에서 해당되는 게시판의 최신글 뽑아오기

    $sql = "select bo_table, wr_id from $g4[board_new_table]

where wr_id = wr_parent and $qry_bo_search order by bn_datetime desc LIMIT 0,$rows";

 

$result = sql_query($sql);

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

   $bo_table=$row[bo_table];

   $write_table=$g4['write_prefix'].$bo_table;

 

   $board_sql = " select * from $g4[board_table] where bo_table = '$bo_table'";

   $board_list[$i]=sql_fetch($board_sql);

 

   $list[$i]=sql_fetch("select * from $write_table where wr_id='$row[wr_id]' ");

 

   //기타 설정

   if ($subject_len)

       $list[$i]['subject'] = conv_subject($list[$i]['wr_subject'], $subject_len, "…");

   else

       $list[$i]['subject'] = conv_subject($list[$i]['wr_subject'], $board_list[$i]['bo_subject_len'], "…");

 

   $list[$i][href]="$g4[bbs_path]/board.php?bo_table={$board_list[$i][bo_table]}&wr_id={$list[$i][wr_id]}".$qstr;

 

   //$list[$i]['is_notice'] = preg_match("/[^0-9]{0,1}{$list[$i]['wr_id']}[\r]{0,1}/", $board_list[$i]['bo_notice']);

   $list[$i]['is_notice']=false;

   $arr_notice = split("\n", trim($board_list[$i]['bo_notice']));

   if(in_array($list[$i]['wr_id'], $arr_notice)) $list[$i]['is_notice']=true;

 

   echo "<!--".$board_list[$i]['bo_table']."/".$board_list[$i]['bo_notice']."-->";

 

   $list[$i]['icon_new'] = "";

    if ($list[$i]['wr_datetime'] >= date("Y-m-d H:i:s", $g4['server_time'] - ($board_list[$i]['bo_new'] * 3600)))

        $list[$i]['icon_new'] = "<img src='$latest_skin_path/img/icon_new.gif' align='absmiddle'>";

 

        $list[$i]['comment_cnt'] = "";

   if ($list[$i]['wr_comment'])

       $list[$i]['comment_cnt'] = "({$list[$i][wr_comment]})";

 

if ($board_list[$i]['bo_use_comment'])

       $list[$i]['comment_href'] = "javascript:win_comment('$g4[bbs_path]/board.php?bo_table=$board_list[$i][bo_table]&wr_id=$list[$i][wr_id]&cwin=1');";

   else

       $list[$i]['comment_href'] = $list[$i]['href'];

 

   $list[$i]['icon_secret'] = "";

   if (strstr($list[$i]['wr_option'], "secret"))

       $list[$i]['icon_secret'] = "<img src='$latest_skin_path/img/icon_secret.gif' align='absmiddle'>";

 

   $list[$i]['datetime'] = substr($list[$i]['wr_datetime'],0,10);

   $list[$i]['datetime2'] = $list[$i]['wr_datetime'];

 

   if ($list[$i]['datetime'] == $g4['time_ymd'])

       $list[$i]['datetime2'] = substr($list[$i]['datetime2'],11,5);

   else

       $list[$i]['datetime2'] = substr($list[$i]['datetime2'],5,5);

 

    }

 

    ob_start();

    include "$latest_skin_path/latest.skin.php";

    $content = ob_get_contents();

    ob_end_clean();

 

    return $content;

}

?> 

이 질문에 댓글 쓰기 :

답변 4

option을 이용해서 아래와 같이 고쳐보는것은 어떨런지요?

 

아래 27~31라인추가 36라인 수정... 입니다.

 

// 최신글 추출
function arr_new($skin_dir="", $board_arr=array(), $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();
    $board_list = array();
 
    //검색조건
    if(count($board_arr)>0){
	    $qry_bo_search=" bo_table in(";
	    for($i=0; $i<count($board_arr); $i++) {
		    $bo_table=$board_arr[$i];
		    $qry_bo_search .= "'$bo_table'";
		    if($i<count($board_arr)-1) $qry_bo_search .= ", ";
	    }
		$qry_bo_search .= ")";
	} else {
		$qry_bo_search="(1)";
	}
 
   $qry_bo_search2 =" ";​
    if($option){
 
	    $qry_bo_search2 =" and wr_1=1 "; 
   }
	//echo $qry_bo_search;
 
	//new에서 해당되는 게시판의 최신글 뽑아오기
    $sql = "select bo_table, wr_id from $g4[board_new_table]
					where wr_id = wr_parent and $qry_bo_search $qry_bo_search2​ order by bn_datetime desc LIMIT 0,$rows";
 
	$result = sql_query($sql);
    for ($i=0; $row = sql_fetch_array($result); $i++) {
	    $bo_table=$row[bo_table];
	    $write_table=$g4['write_prefix'].$bo_table;
 
	    $board_sql = " select * from $g4[board_table] where bo_table = '$bo_table'";
	    $board_list[$i]=sql_fetch($board_sql);
 
	    $list[$i]=sql_fetch("select * from $write_table where wr_id='$row[wr_id]' ");
 
	    //기타 설정
	    if ($subject_len)
	        $list[$i]['subject'] = conv_subject($list[$i]['wr_subject'], $subject_len, "…");
	    else
	        $list[$i]['subject'] = conv_subject($list[$i]['wr_subject'], $board_list[$i]['bo_subject_len'], "…");
 
	    $list[$i][href]="$g4[bbs_path]/board.php?bo_table={$board_list[$i][bo_table]}&wr_id={$list[$i][wr_id]}".$qstr;
 
	    //$list[$i]['is_notice'] = preg_match("/[^0-9]{0,1}{$list[$i]['wr_id']}[\r]{0,1}/", $board_list[$i]['bo_notice']);
	    $list[$i]['is_notice']=false;
	    $arr_notice = split("\n", trim($board_list[$i]['bo_notice']));
	    if(in_array($list[$i]['wr_id'], $arr_notice)) $list[$i]['is_notice']=true;
 
	    echo "<!--".$board_list[$i]['bo_table']."/".$board_list[$i]['bo_notice']."-->";
 
	    $list[$i]['icon_new'] = "";
    	if ($list[$i]['wr_datetime'] >= date("Y-m-d H:i:s", $g4['server_time'] - ($board_list[$i]['bo_new'] * 3600)))
        	$list[$i]['icon_new'] = "<img src='$latest_skin_path/img/icon_new.gif' align='absmiddle'>";
 
        $list[$i]['comment_cnt'] = "";
	    if ($list[$i]['wr_comment'])
	        $list[$i]['comment_cnt'] = "({$list[$i][wr_comment]})";
 
		if ($board_list[$i]['bo_use_comment'])
	        $list[$i]['comment_href'] = "javascript:win_comment('$g4[bbs_path]/board.php?bo_table=$board_list[$i][bo_table]&wr_id=$list[$i][wr_id]&cwin=1');";
	    else
	        $list[$i]['comment_href'] = $list[$i]['href'];
 
	    $list[$i]['icon_secret'] = "";
	    if (strstr($list[$i]['wr_option'], "secret"))
	        $list[$i]['icon_secret'] = "<img src='$latest_skin_path/img/icon_secret.gif' align='absmiddle'>";
 
	    $list[$i]['datetime'] = substr($list[$i]['wr_datetime'],0,10);
	    $list[$i]['datetime2'] = $list[$i]['wr_datetime'];
 
	    if ($list[$i]['datetime'] == $g4['time_ymd'])
	        $list[$i]['datetime2'] = substr($list[$i]['datetime2'],11,5);
	    else
	        $list[$i]['datetime2'] = substr($list[$i]['datetime2'],5,5);
 
    }
 
    ob_start();
    include "$latest_skin_path/latest.skin.php";
    $content = ob_get_contents();
    ob_end_clean();
 
    return $content;
}

 

답변 너무 감사합니다.

 

말씀해주신 코드를 적용했는데 해당 그룹의 wr_1값이 1인값만 나오는게 아니고 최근 게시물 전체가 뿌려지네요. 

 

혹, 다른 방법은 없을까요? 

음... 제가 글을 잘못 읽은것 같네요... 


arr_new를 부를때... arr_new(스킨경로,보드arr,10,40,true) 이런식으로 option을 true상태로 해서 해야 실행이 될겁니다. 


그리고 아래 함수 부분은 다시 변경 했어요. 

36라인 아니고 43라인에 넣어야되는것 같네요. 

 

// 최신글 추출
function arr_new($skin_dir="", $board_arr=array(), $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();
    $board_list = array();
 
    //검색조건
    if(count($board_arr)>0){
	    $qry_bo_search=" bo_table in(";
	    for($i=0; $i<count($board_arr); $i++) {
		    $bo_table=$board_arr[$i];
		    $qry_bo_search .= "'$bo_table'";
		    if($i<count($board_arr)-1) $qry_bo_search .= ", ";
	    }
		$qry_bo_search .= ")";
	} else {
		$qry_bo_search="(1)";
	}
 
   $qry_bo_search2 =" ";​
    if($option){
 
	    $qry_bo_search2 =" and wr_1=1 "; 
   }
	//echo $qry_bo_search;
 
	//new에서 해당되는 게시판의 최신글 뽑아오기
    $sql = "select bo_table, wr_id from $g4[board_new_table]
					where wr_id = wr_parent and $qry_bo_search order by bn_datetime desc LIMIT 0,$rows";
 
	$result = sql_query($sql);
    for ($i=0; $row = sql_fetch_array($result); $i++) {
	    $bo_table=$row[bo_table];
	    $write_table=$g4['write_prefix'].$bo_table;
 
	    $board_sql = " select * from $g4[board_table] where bo_table = '$bo_table' $qry_bo_search2​​ "; 
	    $board_list[$i]=sql_fetch($board_sql);
 
	    $list[$i]=sql_fetch("select * from $write_table where wr_id='$row[wr_id]' ");
 
	    //기타 설정
	    if ($subject_len)
	        $list[$i]['subject'] = conv_subject($list[$i]['wr_subject'], $subject_len, "…");
	    else
	        $list[$i]['subject'] = conv_subject($list[$i]['wr_subject'], $board_list[$i]['bo_subject_len'], "…");
 
	    $list[$i][href]="$g4[bbs_path]/board.php?bo_table={$board_list[$i][bo_table]}&wr_id={$list[$i][wr_id]}".$qstr;
 
	    //$list[$i]['is_notice'] = preg_match("/[^0-9]{0,1}{$list[$i]['wr_id']}[\r]{0,1}/", $board_list[$i]['bo_notice']);
	    $list[$i]['is_notice']=false;
	    $arr_notice = split("\n", trim($board_list[$i]['bo_notice']));
	    if(in_array($list[$i]['wr_id'], $arr_notice)) $list[$i]['is_notice']=true;
 
	    echo "<!--".$board_list[$i]['bo_table']."/".$board_list[$i]['bo_notice']."-->";
 
	    $list[$i]['icon_new'] = "";
    	if ($list[$i]['wr_datetime'] >= date("Y-m-d H:i:s", $g4['server_time'] - ($board_list[$i]['bo_new'] * 3600)))
        	$list[$i]['icon_new'] = "<img src='$latest_skin_path/img/icon_new.gif' align='absmiddle'>";
 
        $list[$i]['comment_cnt'] = "";
	    if ($list[$i]['wr_comment'])
	        $list[$i]['comment_cnt'] = "({$list[$i][wr_comment]})";
 
		if ($board_list[$i]['bo_use_comment'])
	        $list[$i]['comment_href'] = "javascript:win_comment('$g4[bbs_path]/board.php?bo_table=$board_list[$i][bo_table]&wr_id=$list[$i][wr_id]&cwin=1');";
	    else
	        $list[$i]['comment_href'] = $list[$i]['href'];
 
	    $list[$i]['icon_secret'] = "";
	    if (strstr($list[$i]['wr_option'], "secret"))
	        $list[$i]['icon_secret'] = "<img src='$latest_skin_path/img/icon_secret.gif' align='absmiddle'>";
 
	    $list[$i]['datetime'] = substr($list[$i]['wr_datetime'],0,10);
	    $list[$i]['datetime2'] = $list[$i]['wr_datetime'];
 
	    if ($list[$i]['datetime'] == $g4['time_ymd'])
	        $list[$i]['datetime2'] = substr($list[$i]['datetime2'],11,5);
	    else
	        $list[$i]['datetime2'] = substr($list[$i]['datetime2'],5,5);
 
    }
 
    ob_start();
    include "$latest_skin_path/latest.skin.php";
    $content = ob_get_contents();
    ob_end_clean();
 
    return $content;
}

  

성의 있는 답변 너무 감사합니다..

그래도 아직 해결이 안되었네요 ㅠ,ㅠ;;;;

 

arr_new 로 불러오는 곳 마지막에 옵션부분에 true를 적용하고 말씀해주신데로 적용 위치를 바꿨으나 그래도 최근에 입력된 게시물이 모두 나오네요. ㅜ,ㅜ;;

답변을 작성하시기 전에 로그인 해주세요.
전체 123,162 | RSS
QA 내용 검색

회원로그인

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