BOARD

팁·활용

그누보드 검색 결과 특정 그룹(grid)으로 제한하기

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 7회 작성일 26-10-06 17:10

본문

그누보드 검색 결과 특정 그룹(gr_id)으로 제한하기

전체 검색 시 원하지 않는 다른 그룹의 게시판까지 노출되는 문제를 해결하기 위해, 그누보드 4와 그누보드 5의 bbs/search.php 파일 내 SQL 쿼리문에 gr_id 조건을 추가하여 특정 그룹만 필터링하는 방법을 알아봅니다.

그누보드 전체 검색 시 특정 그룹 제한하기

그누보드 전체 검색 시 원하지 않는 다른 그룹의 게시판까지 검색 결과에 노출되는 문제를 해결하려면, bbs/search.php 파일 내부의 SQL 쿼리문에 gr_id 조건을 추가하여 특정 그룹의 게시판만 필터링하도록 수정해야 합니다. 작업을 진행하기 전 대상 파일을 반드시 백업해야 합니다.

그누보드 5

그누보드 5 환경에서는 bbs/search.php 파일의 25~27줄 부근에 있는 $sql 쿼리 영역을 찾습니다.

기본 쿼리:

$sql = " select gr_id, bo_table, bo_read_level from {$g5['board_table']} where bo_use_search = 1 and bo_list_level <= '{$member['mb_level']}' ";
if ($gr_id) $sql.= " and gr_id = '{$gr_id}' ";

위 코드를 아래와 같이 수정하여 필요에 따라 그룹을 제한합니다.

  • 그룹 하나만 고정 검색할 때
$sql = " select gr_id, bo_table, bo_read_level from {$g5['board_table']} where bo_use_search = 1 and bo_list_level <= '{$member['mb_level']}' ";
if ($gr_id) $sql.= " and gr_id = '{$gr_id}' ";
else {
 $sql.= " and gr_id = '그룹ID' ";
}
  • 그룹 2개 이상을 동시에 검색할 때
$sql = " select gr_id, bo_table, bo_read_level from {$g5['board_table']} where bo_use_search = 1 and bo_list_level <= '{$member['mb_level']}' ";
if ($gr_id) $sql.= " and gr_id = '{$gr_id}' ";
else {
 $sql.= " and (gr_id = '그룹ID1' || gr_id = '그룹ID2') ";
}

그누보드 4

그누보드 4 환경에서는 bbs/search.php 파일의 19줄 부근에 있는 $sql 쿼리 문장을 찾습니다.

기본 쿼리:

$sql = " select gr_id, bo_table, bo_read_level from $g4[board_table] where bo_use_search = '1' and bo_list_level <= '$member['mb_level']' ";
  • 그룹 하나만 검색하도록 제한할 때
$sql = " select gr_id, bo_table, bo_read_level from `{$g4['board_table']}` where bo_use_search = '1' and bo_list_level <= '{$member['mb_level']}' and gr_id = '그룹ID' ";
  • 그룹 2개 이상에서 검색하도록 제한할 때
$sql = " select gr_id, bo_table, bo_read_level from `{$g4['board_table']}` where bo_use_search = '1' and bo_list_level <= '{$member['mb_level']}' and (gr_id = '그룹ID1' || gr_id = '그룹ID2') ";

확인 방법

수정 완료 후 사이트의 전체 검색 기능을 통해 지정한 그룹에 속한 게시판의 글들만 검색 결과에 정상적으로 출력되는지 확인합니다.

그누보드 4와 그누보드 5 버전별 search.php SQL 쿼리 수정 위치와 코드

그누보드 전체 검색 시 특정 그룹의 게시판들만 결과에 나오도록 제한하려면, 사용 중인 버전에 따라 bbs/search.php 파일 내부의 SQL 쿼리문 수정 위치와 방식에 차이가 있습니다.

1. 그누보드 5

  • 수정 파일 위치: bbs/search.php 파일의 25~27줄 부근
  • 기존 코드 구조:
    $sql = " select gr_id, bo_table, bo_read_level from {$g5['board_table']} where bo_use_search = 1 and bo_list_level <= '{$member['mb_level']}' ";
    if ($gr_id)
    $sql.= " and gr_id = '{$gr_id}' ";
  • 그룹 제한 수정 방법:조건문 아래에 else 구문을 추가하여 고정할 그룹 ID를 지정합니다.
    • 그룹 하나만 검색할 때:
    else {
    $sql.= " and gr_id = '그룹ID' ";
    }
    • 그룹 2개 이상 검색할 때:
    else {
    $sql.= " and (gr_id = '그룹ID1' || gr_id = '그룹ID2') ";
    }

2. 그누보드 4

  • 수정 파일 위치: bbs/search.php 파일의 19줄 부근
  • 기존 코드 구조:
    $sql = " select gr_id, bo_table, bo_read_level from $g4[board_table] where bo_use_search = '1' and bo_list_level <= '$member['mb_level']' ";
  • 그룹 제한 수정 방법:기본 SQL 쿼리문 뒤에 and gr_id 조건을 직접 추가합니다.
    • 그룹 하나에서만 검색할 때:
    $sql = " select gr_id, bo_table, bo_read_level from `{$g4['board_table']}` where bo_use_search = '1' and bo_list_level <= '{$member['mb_level']}' and gr_id = '그룹ID' ";
    • 그룹 2개 이상에서 검색할 때:
    $sql = " select gr_id, bo_table, bo_read_level from `{$g4['board_table']}` where bo_use_search = '1' and bo_list_level <= '{$member['mb_level']}' and (gr_id = '그룹ID1' || gr_id = '그룹ID2') ";

다중 그룹 검색 쿼리 조건 작성 방법

그누보드에서 2개 이상의 여러 그룹을 동시에 검색 결과에 포함시키려면 bbs/search.php 파일 내 SQL 쿼리문의 gr_id 조건에 OR 연산자(||)를 활용하여 다중 그룹 지정 방식을 적용할 수 있습니다.

그누보드 5 버전

bbs/search.php 파일 내의 $sql 쿼리문에서 else 구간 내 그룹 2개 이상 검색할 때 주석 처리된 구문을 활용하여 아래와 같이 작성합니다.

else {
 // 그룹 2개 이상 검색할때
 $sql.= " and (gr_id = '그룹ID1' || gr_id = '그룹ID2') ";
}

그누보드 4 버전

bbs/search.php 파일 내의 $sql 쿼리문에 and 연산자와 함께 괄호 및 || 연산자를 포함하여 아래와 같이 작성합니다.

$sql = " select gr_id, bo_table, bo_read_level from `{$g4['board_table']}` where bo_use_search = '1' and bo_list_level <= '{$member['mb_level']}' and (gr_id = '그룹ID1' || gr_id = '그룹ID2') ";

그누보드 전체 검색 시 특정 그룹으로 결과 제한하기

그누보드 전체 검색 기능 이용 시, 전체 게시판이 아니라 특정 그룹에 속한 게시판들만 검색 결과에 나오도록 제한하려면 각 버전별 bbs/search.php 파일 내부의 SQL 쿼리문을 수정해야 합니다.

1. 수정 전 주의사항

파일을 수정하기 전, 원본 파일의 백업을 반드시 진행해야 하며 최신 버전의 경우 파일 경로 및 코드 라인 위치가 다를 수 있습니다.

2. 그누보드 5 버전 수정 방법

bbs/search.php 파일 내의 아래 쿼리문을 찾습니다.

$sql = " select gr_id, bo_table, bo_read_level from {$g5['board_table']} where bo_use_search = 1 and bo_list_level <= '{$member['mb_level']}' ";
if ($gr_id) $sql.= " and gr_id = '{$gr_id}' ";

조건을 고정하여 특정 그룹만 검색되게 하려면 아래와 같이 else 구문 내부를 변경합니다.

  • 그룹 하나만 검색할 때
$sql = " select gr_id, bo_table, bo_read_level from {$g5['board_table']} where bo_use_search = 1 and bo_list_level <= '{$member['mb_level']}' ";
if ($gr_id) $sql.= " and gr_id = '{$gr_id}' ";
else {
 $sql.= " and gr_id = '그룹ID' ";
}
  • 그룹 2개 이상을 검색할 때
$sql = " select gr_id, bo_table, bo_read_level from {$g5['board_table']} where bo_use_search = 1 and bo_list_level <= '{$member['mb_level']}' ";
if ($gr_id) $sql.= " and gr_id = '{$gr_id}' ";
else {
 $sql.= " and (gr_id = '그룹ID1' || gr_id = '그룹ID2') ";
}

3. 그누보드 4 버전 수정 방법

bbs/search.php 파일 내의 아래 쿼리문을 찾습니다.

$sql = " select gr_id, bo_table, bo_read_level from $g4[board_table] where bo_use_search = '1' and bo_list_level <= '$member['mb_level']' ";
  • 그룹 하나에서만 검색할 때
$sql = " select gr_id, bo_table, bo_read_level from `{$g4['board_table']}` where bo_use_search = '1' and bo_list_level <= '{$member['mb_level']}' and gr_id = '그룹ID' ";
  • 그룹 2개 이상에서 검색할 때
$sql = " select gr_id, bo_table, bo_read_level from `{$g4['board_table']}` where bo_use_search = '1' and bo_list_level <= '{$member['mb_level']}' and (gr_id = '그룹ID1' || gr_id = '그룹ID2') ";

상황별 판단 및 행동 가이드

내 상황우선할 판단다음 행동
그누보드 4에서 전체 검색 시 특정 그룹 게시판만 조회되도록 제한하고 싶음bbs/search.php 파일 19줄 부근의 $sql 쿼리문 확인원본 파일 백업 후 board_table 쿼리문에 and gr_id = '그룹ID' 조건 직접 추가
그누보드 5에서 전체 검색 시 단일 또는 다중 그룹으로 결과 범위를 좁히고 싶음bbs/search.php 파일 25~27줄 부근의 if ($gr_id) 조건문 확인원본 파일 백업 후 else 블록 내부에 and gr_id = '그룹ID' 또는 and (gr_id = '그룹ID1' || gr_id = '그룹ID2') 조건 추가

실전 FAQ

Q. 쿼리를 수정한 뒤 검색 결과가 아예 나오지 않거나 에러가 발생합니다.

  • 예외 및 대안: bbs/search.php 파일 수정 과정에서 따옴표(')나 괄호(()), 세미콜론(;) 문법이 누락되었을 가능성이 높습니다. 작업 전 백업해 둔 원본 파일을 복원하거나, 추가한 gr_id 조건문 구문과 변수명을 다시 점검하여 문법 오류를 수정하십시오.

Q. 단일 그룹이 아니라 2개 이상의 여러 그룹을 동시에 검색 결과에 포함시키려면 어떻게 해야 하나요?

  • 실행 방법: SQL 쿼리 조건 내에서 || 연산자와 괄호를 사용하여 다중 그룹을 지정할 수 있습니다. 그누보드 4는 and (gr_id = '그룹ID1' || gr_id = '그룹ID2') 형태로 작성하고, 그누보드 5는 else 구문 내부의 주석 처리된 다중 그룹 예시 코드를 활성화하여 적용합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.