특정게시판에 자신글 외에 다른글은 리스트에 안보이게 하는법 좀 알려주세요.

특정게시판에 자신글 외에 다른글은 리스트에 안보이게 하는법 좀 알려주세요.

QA

특정게시판에 자신글 외에 다른글은 리스트에 안보이게 하는법 좀 알려주세요.

본문

자신에 글 외에 다른글은 전부다 안보이게 하고싶은데

방법이 없나요? 아무리 진행해도 되지를 않아요.

이 질문에 댓글 쓰기 :

답변 2

https://sir.kr/g5_tip/11861

링크드린 글 본문을 보시면 "if($bo_table == "게시판이름" && !$is_admin) { // 관리자를 제외하고 특정게시판에 본인글만 보이기" 라는 대목이 있습니다. $bo_table을 통해 적용을 원하는 2개 게시판만 적용하고, 나머지 일반게시판은 순정 설정 그대로 두는 방법이 있습니다.

if($bo_table == "게시판이름" && !$is_admin) { // 관리자를 제외하고 특정게시판에 본인글만 보이기
이걸 어디에다가 넣어야되나요? 이부분은 어디에다가 적어야되는지 안적혀있어서요.

그누보드 순정 기준이고, 아래 '$array_bo_table' 에 설정을 원하는 게시판에 bo_table를 입력하여 보세요. 외부라서 정확한 테스트는 못했지만, 이런식으로 하시면 될 듯 합니다.


<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$array_bo_table = ""; // 적용 게시판 bo_table
// 분류 사용 여부
$is_category = false;
$category_option = '';
if ($board['bo_use_category']) {
    $is_category = true;
    $category_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table;
    $category_option .= '<li><a href="'.$category_href.'"';
    if ($sca=='')
        $category_option .= ' id="bo_cate_on"';
    $category_option .= '>전체</a></li>';
    $categories = explode('|', $board['bo_category_list']); // 구분자가 , 로 되어 있음
    for ($i=0; $i<count($categories); $i++) {
        $category = trim($categories[$i]);
        if ($category=='') continue;
        $category_option .= '<li><a href="'.($category_href."&sca=".urlencode($category)).'"';
        $category_msg = '';
        if ($category==$sca) { // 현재 선택된 카테고리라면
            $category_option .= ' id="bo_cate_on"';
            $category_msg = '<span class="sound_only">열린 분류 </span>';
        }
        $category_option .= '>'.$category_msg.$category.'</a></li>';
    }
}
$sop = strtolower($sop);
if ($sop != 'and' && $sop != 'or')
    $sop = 'and';
// 분류 선택 또는 검색어가 있다면
$stx = trim($stx);
//검색인지 아닌지 구분하는 변수 초기화
$is_search_bbs = false;
if ($sca || $stx || $stx === '0') {     //검색이면
    $is_search_bbs = true;      //검색구분변수 true 지정
    $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']})) ";
    if($bo_table == $array_bo_table && !$is_admin) {
        $sql_search .= " and mb_id = '{$member[mb_id]}' "; // 본인 글만 카운트
    }
    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
    // 라엘님 제안 코드로 대체 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 {
    if($bo_table == $array_bo_table && !$is_admin) {
    
        // 본인 글만 카운트
        $sql_search = " mb_id = '{$member[mb_id]}' ";
        $sql = " SELECT COUNT * 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'];
    }
}
if(G5_IS_MOBILE) {
    $page_rows = $board['bo_mobile_page_rows'];
    $list_page_rows = $board['bo_mobile_page_rows'];
} else {
    $page_rows = $board['bo_page_rows'];
    $list_page_rows = $board['bo_page_rows'];
}
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
// 년도 2자리
$today2 = G5_TIME_YMD;
$list = array();
$i = 0;
$notice_count = 0;
$notice_array = array();
// 공지 처리
if (!$is_search_bbs) {
    $arr_notice = explode(',', trim($board['bo_notice']));
    $from_notice_idx = ($page - 1) * $page_rows;
    if($from_notice_idx < 0)
        $from_notice_idx = 0;
    $board_notice_count = count($arr_notice);
    for ($k=0; $k<$board_notice_count; $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;
        $notice_array[] = $row['wr_id'];
        if($k < $from_notice_idx) continue;
        $list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
        $list[$i]['is_notice'] = true;
        $i++;
        $notice_count++;
        if($notice_count >= $list_page_rows)
            break;
    }
}
$total_page  = ceil($total_count / $page_rows);  // 전체 페이지 계산
$from_record = ($page - 1) * $page_rows; // 시작 열을 구함
// 공지글이 있으면 변수에 반영
if(!empty($notice_array)) {
    $from_record -= count($notice_array);
    if($from_record < 0)
        $from_record = 0;
    if($notice_count > 0)
        $page_rows -= $notice_count;
    if($page_rows < 0)
        $page_rows = $list_page_rows;
}
// 관리자라면 CheckBox 보임
$is_checkbox = false;
if ($is_member && ($is_admin == 'super' || $group['gr_admin'] == $member['mb_id'] || $board['bo_admin'] == $member['mb_id']))
    $is_checkbox = true;
// 정렬에 사용하는 QUERY_STRING
$qstr2 = 'bo_table='.$bo_table.'&sop='.$sop;
// 0 으로 나눌시 오류를 방지하기 위하여 값이 없으면 1 로 설정
$bo_gallery_cols = $board['bo_gallery_cols'] ? $board['bo_gallery_cols'] : 1;
$td_width = (int)(100 / $bo_gallery_cols);
// 정렬
// 인덱스 필드가 아니면 정렬에 사용하지 않음
//if (!$sst || ($sst && !(strstr($sst, 'wr_id') || strstr($sst, "wr_datetime")))) {
if (!$sst) {
    if ($board['bo_sort_field']) {
        $sst = $board['bo_sort_field'];
    } else {
        $sst  = "wr_num, wr_reply";
        $sod = "";
    }
} else {
    // 게시물 리스트의 정렬 대상 필드가 아니라면 공백으로 (nasca 님 09.06.16)
    // 리스트에서 다른 필드로 정렬을 하려면 아래의 코드에 해당 필드를 추가하세요.
    // $sst = preg_match("/^(wr_subject|wr_datetime|wr_hit|wr_good|wr_nogood)$/i", $sst) ? $sst : "";
    $sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood)$/i", $sst) ? $sst : "";
}
if(!$sst)
    $sst  = "wr_num, wr_reply";
if ($sst) {
    $sql_order = " order by {$sst} {$sod} ";
}

if($bo_table == $array_bo_table && !$is_admin) {
    // 본인 글만 보이기 수정
    $sql_search= " and mb_id = '{$member[mb_id]}' ";
    $sql = " select * from {$write_table} where wr_is_comment = 0 {$sql_search} ";
    if(!empty($notice_array))
        $sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
        $sql .= " {$sql_order} limit {$from_record}, $page_rows ";
    }
    
}else{
    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 ";
        if(!empty($notice_array))
            $sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
        $sql .= " {$sql_order} limit {$from_record}, $page_rows ";
    }

} // end

// 페이지의 공지개수가 목록수 보다 작을 때만 실행
if($page_rows > 0) {
    $result = sql_query($sql);
    $k = 0;
    while ($row = sql_fetch_array($result))
    {
        // 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
        if ($is_search_bbs)
            $row = sql_fetch(" select * from {$write_table} where wr_id = '{$row['wr_parent']}' ");
        $list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
        if (strstr($sfl, 'subject')) {
            $list[$i]['subject'] = search_font($stx, $list[$i]['subject']);
        }
        $list[$i]['is_notice'] = false;
        $list_num = $total_count - ($page - 1) * $list_page_rows - $notice_count;
        $list[$i]['num'] = $list_num - $k;
        $i++;
        $k++;
    }
}
$write_pages = get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, './board.php?bo_table='.$bo_table.$qstr.'&page=');
$list_href = '';
$prev_part_href = '';
$next_part_href = '';
if ($is_search_bbs) {
    $list_href = './board.php?bo_table='.$bo_table;
    $patterns = array('#&page=[0-9]*#', '#&spt=[0-9\-]*#');
    //if ($prev_spt >= $min_spt)
    $prev_spt = $spt - $config['cf_search_part'];
    if (isset($min_spt) && $prev_spt >= $min_spt) {
        $qstr1 = preg_replace($patterns, '', $qstr);
        $prev_part_href = './board.php?bo_table='.$bo_table.$qstr1.'&spt='.$prev_spt.'&page=1';
        $write_pages = page_insertbefore($write_pages, '<a href="'.$prev_part_href.'" class="pg_page pg_prev">이전검색</a>');
    }
    $next_spt = $spt + $config['cf_search_part'];
    if ($next_spt < 0) {
        $qstr1 = preg_replace($patterns, '', $qstr);
        $next_part_href = './board.php?bo_table='.$bo_table.$qstr1.'&spt='.$next_spt.'&page=1';
        $write_pages = page_insertafter($write_pages, '<a href="'.$next_part_href.'" class="pg_page pg_end">다음검색</a>');
    }
}

$write_href = '';
if ($member['mb_level'] >= $board['bo_write_level']) {
    $write_href = './write.php?bo_table='.$bo_table;
}
$nobr_begin = $nobr_end = "";
if (preg_match("/gecko|firefox/i", $_SERVER['HTTP_USER_AGENT'])) {
    $nobr_begin = '<nobr>';
    $nobr_end   = '</nobr>';
}
// RSS 보기 사용에 체크가 되어 있어야 RSS 보기 가능 061106
$rss_href = '';
if ($board['bo_use_rss_view']) {
    $rss_href = './rss.php?bo_table='.$bo_table;
}
$stx = get_text(stripslashes($stx));
include_once($board_skin_path.'/list.skin.php');
?>

힘들게 계속 도와주셨는데... 안되네요. 이거 카피해서 해봐도 안되고 제가 따로만들어서도 해보고 해도 본인이 작성글 외에 다른글이 나오지가 않아요.
제가 정한 게시판만 적용이 되야되는데 모든게시판이 적용이 되요. 계속 ㅜㅜ

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

회원로그인

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