선택한 게시판에서 선택한 공지만 메인에 최근게시물로 뽑아오기 단, 답글은 제외 > 그누4 팁자료실

그누4 팁자료실

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

선택한 게시판에서 선택한 공지만 메인에 최근게시물로 뽑아오기 단, 답글은 제외 정보

선택한 게시판에서 선택한 공지만 메인에 최근게시물로 뽑아오기 단, 답글은 제외

본문

이것때문에 별 쇼를 다했습니다. 거의 한달 가까이 너무나 힘들어서 두번다시 저와 같이 헤매시는분들을 없게 하기 위해 올립니다.

그냥, 답변글 없애고, 공지만 나오게 할수는 있었지만,
문제는 공지를 체크하지 않은 게시물이 있을경우는 메인의 최근게시물에서
한줄이 없어지는 경우가 발생했습니다.


너무 힘들었습니다. 왜냐면 초짜였으니까요... 엑스엠엘님께 감사드립니다....



저는 bbs/new.php 와 스킨의 new.skin.php 두파일만 건드렸습니다.
* 먼저 해야할것은 관리자모드의 각게시판설정에서 전체검색사용 부분을 체크해 주셔야합니다. 이것을 선택안하면 메인노출에서 제외 됩니다.

#### 아래는 bbs/new.php 입니다.

<?
 //include_once("./_common.php");
 
 //$g4[title] = "최근 게시물";
 //include_once("./_head.php");
 
 function chkNotice($notice_array,$wr_id)
 {  
  $List_split = split("\n",$notice_array);
  for($ii=0;$ii<sizeof($List_split);$ii++)
  {
   if(trim($wr_id) == trim($List_split[$ii])) return true;
  }
  return false;
 }

 $sql_common = " from $g4[board_new_table] a, $g4[board_table] b, $g4[group_table] c
       where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = '1' ";


 if ($gr_id)  $sql_common .= " and b.gr_id = '$gr_id' ";
 $sql_common .= " and a.wr_id = a.wr_parent ";
 
 
 if ($mb_id) $sql_common .= " and a.mb_id = '$mb_id' ";
 $sql_order = " order by a.bn_id desc ";
 
 $sql = " select count(*) as cnt $sql_common ";
 $row = sql_fetch($sql);
 $total_count = $row[cnt];
 
 $rows = $config[cf_new_rows];
 $total_page  = ceil($total_count / $rows);  // 전체 페이지 계산
 if (!$page) $page = 1;       // 페이지가 없으면 첫 페이지 (1 페이지)
 $from_record = ($page - 1) * $rows;   // 시작 열을 구함
 
 $group_select = "<select name=gr_id id=gr_id onchange='select_change();'><option value=''>전체그룹";
 $sql = " select gr_id, gr_subject from $g4[group_table] order by gr_id ";
 $result = sql_query($sql);
 for ($i=0; $row=sql_fetch_array($result); $i++)
 {
  $group_select .= "<option value='$row[gr_id]'>$row[gr_subject]";
 }
 $group_select .= "</select>";
 
 $list_notice_arr = array();
 $cc_rows = 5 * $rows;
 $sql = " select a.*, b.bo_subject, b.bo_notice, c.gr_subject, c.gr_id  
     $sql_common
     $sql_order
     limit $from_record, $cc_rows ";
 
 $result = sql_query($sql);
 
 $i = 0;
 while($row=sql_fetch_array($result))
 {
  
  if(!chkNotice($row[bo_notice],$row[wr_id])) continue;
  if($i < $from_record ) continue;
  if($i >= $rows ) continue;
  
  $tmp_write_table = $g4[write_prefix] . $row[bo_table]; 
  
 
  $bo_table  = $row[bo_table];
    $wr_id   = $row[wr_id];
  $wr_subject = $row[wr_subject];
  $list_notice_arr[$i] = $row;
 
  if ($row[wr_id] == $row[wr_parent]) // 원글
  {
  
   $comment = "";
   $comment_link = "";
   $row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_id]'   ");  
   //$list[$i] = $row2;
 
     // $name = get_sideview($row2[mb_id], cut_str($row2[wr_name], $config[cf_cut_name]), //$row2[wr_email], $row2[wr_homepage]);
   // 당일인 경우 시간으로 표시함
   $datetime = substr($row2[wr_datetime],0,10);
   $datetime2 = $row2[wr_datetime];
 
    if(strstr($row[bo_notice],$row[wr_id]) ) $list_notice_arr[$i][is_notice]=1;
    else $list_notice_arr[$i][is_notice]=0;
 
   if ($datetime == $g4[time_ymd])
    $datetime2 = substr($datetime2,11,5);
   else
    $datetime2 = substr($datetime2,5,5);
    
     $wr_id   = $row2[wr_id];
   $wr_subject = $row2[wr_subject];
   $list_notice_arr[$i] = $row2;
  }

 

  $list_notice_arr[$i][href] = "./bbs/board.php?bo_table=$bo_table&wr_id=$wr_id{$comment_link}";
  $list_notice_arr[$i][datetime] = $datetime;
  $list_notice_arr[$i][datetime2] = $datetime2;
 

   

  $list_notice_arr[$i][wr_subject] = $wr_subject;
  $i++;
 }
 
 
 $new_skin_path = "$g4[path]/skin/new/$config[cf_new_skin]";

 include_once("$new_skin_path/new.skin.php");
 
 //include_once("./_tail.php");
?>


########### 아래는 skin의 new.skin.php 입니다.#############################

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

<style>
.n_title1 { font-family:돋움; font-size:9pt; color:#FFFFFF; }
.n_title2 { font-family:돋움; font-size:9pt; color:#5E5E5E; }
</style>

</style>

 

<!-- 제목 시작 -->
<table width="94%" border="0" cellspacing="0" cellpadding="0">

<?
for ($i=0; $i<count($list_notice_arr); $i++)
{
 $gr_subject = cut_str($list_notice_arr[$i][gr_subject], 10);
   $bo_subject = cut_str($list_notice_arr[$i][bo_subject], 10);
   $wr_subject = get_text(cut_str($list_notice_arr[$i][wr_subject], 30));

//if( !$list[$i][is_notice] == 1) continue;
 echo "<tr>";
 echo "<td height=18 width=85%>. <a href='{$list_notice_arr[$i][href]}'>{$wr_subject}</a></td>";
 echo "<td align=center colspan=2 >{$list_notice_arr[$i][datetime2]}</td>";
 
 echo "</tr>";
 echo  "<tr>";
 echo  "<td colspan=9 height=1 background={$new_skin_path}/img/dot_bg.gif></td>";
 echo  "</tr>";
 }
 ?>

 

</table>


************************* 그리고 index.php 에서 최근게시물 뽑아오는 자리에
<? include "bbs/new.php";?> 이렇게 하세요.

저도 초짜입니다. ^^


추천
0

댓글 5개

무조건 감사^^!

초자라 팝업창을 붙이려 며칠 고생을 하다가 귀파일을 알고 인덱스에 넣으니 처음글들을 표시할 수 있어서 팝업창을 대시하려 합니다.
그런데 나오는 글자의 크기와 최신글의 수자를 제한하려면 어디를 건드려야 하나요?
안녕하세요. 나오는글자는 .css 파일을 수정해 보시구요. 최근글의 수자는 관리자모드의 설정부분에 최근글수 라는 항목이 있습니다. 여기서 수정하시기 바랍니다.
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

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