게시판 리스트에서 비밀글 노출하지 않기 > 그누보드5 팁자료실

그누보드5 팁자료실

게시판 리스트에서 비밀글 노출하지 않기 정보

게시판 리스트에서 비밀글 노출하지 않기

본문

관리자가 게시글 작성시, 비밀글에 체크하면 일반회원에게 비밀글이 리스트에서 노출되지 않습니다.

단, 관리자에게는 보입니다.

 

일반회원 접속시

2040587779_1552470404.9091.png

 

관리자접속시

2040587779_1552470445.5346.png

 

bbs/list.php파일을 수정해 줍니다.

 

1.상단

비밀글을 설정하면 wr_option에 secret이 저장되더라고요. 그래서 관리자와 그 외 멤버를 구분하여 하단에 추가될 구문을 만들고, 목록생성시 목록넘버 때문에 숨겨진 목록 갯수를 구해줘서 빼줍니다.

 

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

$secret = 'secret';
$secretSQL = " and wr_option NOT LIKE '%$secret%'"; 
$getSecretCount = "select COUNT(*) from {$write_table} WHERE wr_option LIKE '%$secret%'";
$secretRow = sql_fetch($getSecretCount);
$secretNumber = $secretRow['COUNT(*)'];

if ($is_admin) {
    $secretSQL = ""; 
    $secretNumber = 0;
}

 

 

2.mysql구문 추가 및 카운트조절

검색시 비밀글 제외를 시키기위하여 수정해줍니다

if ($sca || $stx || $stx === '0') {     //검색이면
    $is_search_bbs = true;   
    $secretNumber = 0; 
    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);

    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
    $sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
    $row = sql_fetch($sql);
    $min_spt = (int)$row['min_wr_num'];

    if (!$spt) $spt = $min_spt;

    $sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']}){$secretSQL}";

    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
    // 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
    $sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
    $row = sql_fetch($sql);
    $total_count = $row['cnt'];
}else {
    $sql_search = "";

    $total_count = $board['bo_count_write']-$secretNumber;
}

 

if ($is_search_bbs) {
    $sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";
} else {
    $sql = " select * from {$write_table} where wr_is_comment = 0 {$secretSQL}";
    if(!empty($notice_array))
        $sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
    $sql .= " {$sql_order} limit {$from_record}, $page_rows ";
}

 

관리자에게만 노출되는 기능이지만, 특정권한이상 회원에게만 노출되는 기능으로 발전 시킬 수 있을 것 같습니다. 저처럼 초보분들께 조금이나마 도움이 되면 좋겠습니다.

 

추천
7
  • 복사

댓글 12개

제가 짜집기수준이라서 퀴리문을 수정해서 테스트는 못햇읍니다
일단 이걸로 테스트사이트에 적용하면서 지켜보겟읍니다

분류 나오는 법!!

2.mysql구문 추가 및 카운트조절

검색시 비밀글 제외를 시키기위하여 수정해줍니다

if ($sca || $stx || $stx === '0') {     //검색이면
    $is_search_bbs = true;   
   $secretNumber = 0; 
    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);

    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
    $sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
    $row = sql_fetch($sql);
    $min_spt = (int)$row['min_wr_num'];

    if (!$spt) $spt = $min_spt;

    $sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']}){$secretSQL}";

    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
    // 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
    $sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
    $row = sql_fetch($sql);
    $total_count = $row['cnt'];
}else {
    $sql_search = "";

   $total_count = $board['bo_count_write']-$secretNumber;
}


이 부분 때문에 오류가 생깁니다.
 

if ($sca || $stx || $stx === '0') {     //검색이면
    $is_search_bbs = true;   
    $secretNumber = 0; 
    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);

    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
    $sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
    $row = sql_fetch($sql);
    $min_spt = (int)$row['min_wr_num'];

    if (!$spt) $spt = $min_spt;

    $sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})){$secretSQL}";

    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
    // 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
    $sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
    $row = sql_fetch($sql);
    $total_count = $row['cnt'];
    
    $sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
    $result = sql_query($sql);
    $total_count = sql_num_rows($result);
}else {
    $sql_search = "";

   $total_count = $board['bo_count_write']-$secretNumber;
}

 

이거 넣으세요.

 

  $sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})){$secretSQL}";

이부분에 ")" 소괄호가 빠져있었어요!!
 

© SIRSOFT
현재 페이지 제일 처음으로