게시판 목록에 공지사항 중복 출력되지 않게 하기(설명추가) > 그누4 팁자료실

그누4 팁자료실

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

게시판 목록에 공지사항 중복 출력되지 않게 하기(설명추가) 정보

게시판 목록에 공지사항 중복 출력되지 않게 하기(설명추가)

첨부파일

bbs.zip (5.0K) 308회 다운로드 2010-10-01 22:01:06

본문

오래전에 적용한 팁이라 다른 분의 팁을 수정해서 적용한건지 아님 제가 만든 건지 기억이 없네요...ㅎㅎ
제 힘으로만 만들기에는 실력이 부족하니 아마도 다른 분의 팁을 수정하지 않았나 싶습니다...^^
앞서 다른 팁도 여럿 올라와있지만 비슷하지만 조금 다른 팁이라고 보시면 될듯 싶네요...ㅋ
아래에 추가된 기능에 대해서 읽어보시고 필요하신분은 적용해서 사용하시면 됩니다.

[추가설명부분(2010-10-07)]
기본 게시판에서 추가된 기능으로써는
1. 공지사항을 게시판 목록에 중복출력되지 않게 함.(갤러리 게시판에서 사용하기 용이함)
2. 첫페이지에만 공지사항이 출력되고 페이지 이동시에는 공지사항이 출력되지 않음(공지사항이 많을 경우에 용이함)
3. 카테고리 선택시에는 공지사항이 출력되지 않음(이 부분을 왜 만들었는지는 잘 기억안남...^^)
4.
위 모든 기능에서 게시물 번호는 정상적으로 출력됨

4.32.11 버젼에 적용했으며, 파일을 첨부하므로 해당 파일을 백업하신 후 테스트 해보세요.

우선 필요한 파일은 bbs/board.php 파일과 bbs/list.php 파일입니다.
--------------------------------------------------------------------------------
bbs/board.php
--------------------------------------------------------------------------------
132 라인 부근(추가)
$notice_array = explode("\n", trim($board[bo_notice]));
if (!in_array((int)$wr_id, $notice_array))
{

if ($member[mb_point] + $board[bo_read_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 글읽기(".number_format($board[bo_read_point]).")가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.");

insert_point($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, '읽기');
}

--------------------------------------------------------------------------------
bbs/list.php
--------------------------------------------------------------------------------
1 라인 부근(추가)
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 공지사항의 갯수를 구함[2008-02-03]
$bo_notics_cnt = count(split("\n", trim($board[bo_notice])));
// 만약 내용이 없으면 카운트는 0으로 한다...[2008-04-29]
if(trim($board[bo_notice]) == "") $bo_notics_cnt = 0;




44라인 부근(추가)
$total_page  = ceil($total_count / $board[bo_page_rows]);  // 전체 페이지 계산
//분류선택시 전체페이지에서 공지사항의 갯수만큼 빼줌.[2008-02-03]
if($min_spt)
 {
 $total_page  = ceil($total_count / $board[bo_page_rows]);
 }else{
 $total_page  = ceil(($total_count - $bo_notics_cnt) / $board[bo_page_rows]);
 }




77~114 라인 부근(추가 및 위치 변동)
분홍색 부분은 80~91라인에 있던 것을 아래로 내렸으며, 위치에 따라서 출력유무가 좌우됩니다.

if ($sst)
    $sql_order = " order by $sst $sod ";
<원래 위치>
$list = array();
$i = 0;

if (!$sca && !$stx)
{
    $arr_notice = explode("\n", trim($board[bo_notice]));
    for ($k=0; $k<count($arr_notice); $k++)
    {
        if (trim($arr_notice[$k])=='') continue;

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

        if (!$row[wr_id]) continue;

        $list[$i] = get_list($row, $board, $board_skin_path, $board[bo_subject_len]);
        $list[$i][is_notice] = true;
  $notice_order .= " and wr_id != '$arr_notice[$k]'"; //[2008-02-03] 추가
        $i++;
    }
}
if ($sca || $stx)
{
    $sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";
}
else
{
    $sql = " select * from $write_table where wr_is_comment = 0 $notice_order $sql_order limit $from_record, $board[bo_page_rows] "; // $notice_order 추가[2008-02-03]

}
$result = sql_query($sql);

// 년도 2자리
$today2 = $g4[time_ymd];
$k = 0;


116~131 라인 부근(추가)
while ($row = sql_fetch_array($result))
{
    // 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
    if ($sca || $stx)
        $row = sql_fetch(" select * from $write_table where wr_id = '$row[wr_parent]' ");

    $list[$i] = get_list($row, $board, $board_skin_path, $board[bo_subject_len]);
    if (strstr($sfl, "subject"))
        $list[$i][subject] = search_font($stx, $list[$i][subject]);
    $list[$i][is_notice] = false;
    //$list[$i][num] = number_format($total_count - ($page - 1) * $board[bo_page_rows] - $k);
    $list[$i][num] = $total_count - ($page - 1) * $board[bo_page_rows] - $k;
//공지사항이 있을경우 총 게시물에서 수량을 빼서 번호를 맞춤. 분류선택시 번호조절 [2008-02-07] ' - $bo_notics_cnt' 추가 및 수정
  if($board[bo_notice])
   {
   if ($min_spt)
    {
    $list[$i][num] = $total_count - ($page - 1) * $board[bo_page_rows] - $k;
    }else{
     $list[$i][num] = $total_count - ($page - 1) * $board[bo_page_rows] - $k - $bo_notics_cnt;
    }
   }else{
    $list[$i][num] = $total_count - ($page - 1) * $board[bo_page_rows] - $k;
   }

    $i++;
    $k++;
}


추천
9

댓글 13개

기존에 소스는 어찌어찌해서 사용하긴했지만 문제가 좀 있어보였는데..
이건 정말 깔끔하네요..^^ 한번에 성공했습니다..감사합니다..
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

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