BOARD

팁·활용

그누보드 통합 검색에서 게시판 분류명(caname) 검색 및 출력하기

페이지 정보

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

본문

그누보드 통합 검색에서 게시판 분류명(ca_name) 검색 및 출력하기

그누보드 전체 검색 기능 이용 시 게시판 분류명(ca_name)을 검색 범위에 포함시키고, 검색 결과 화면에 카테고리명을 함께 출력하여 검색 편의성과 가독성을 높이는 방법을 알아봅니다.

head.php 검색 폼 수정 방법

그누보드 통합 검색 폼에서 분류명(ca_name)을 검색 범위에 포함시키려면 head.php 파일의 검색 폼 내에 있는 sfl hidden 입력 필드 값에 ca_name을 추가해야 합니다.

수정 위치 및 코드

head.php 파일 내의 검색 폼 안에서 sfl 파라미터를 지정하는 부분을 찾아 아래와 같이 wr_subject||wr_content||ca_name 형태로 수정합니다.

<input type="hidden" name="sfl" value="wr_subject||wr_content||ca_name">

이 설정을 적용하면 전체 검색 입력폼에서 기존의 제목, 내용뿐만 아니라 카테고리 분류명까지 함께 검색 대상으로 지정할 수 있습니다.

bbs/search.php 파일의 쿼리 스위치문에 ca_name 조건 추가하기

그누보드 통합 검색에서 게시판 분류명(ca_name)을 검색 범위에 포함시키기 위해, bbs/search.php 파일 내 다중 필드 검색을 처리하는 switch 문에 case 'ca_name' 조건을 추가해야 합니다.

수정 방법

bbs/search.php 파일에서 필드 루프 및 switch ($field[$k]) 구문을 찾아 아래와 같이 case 'ca_name' 블록을 추가합니다.

for ($k=0; $k<count($field); $k++) {
 $str.= $op2;
 switch ($field[$k]) {
 case 'mb_id':
 case 'wr_name':
 $str.= "$field[$k] = '$s[$i]'";
 break;
 case 'wr_subject':
 case 'wr_content':
 if (preg_match("/[a-zA-Z]/", $search_str))
 $str.= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";
 else
 $str.= "INSTR({$field[$k]}, '{$search_str}')";
 break;
 case 'ca_name':
 $str.= "$field[$k] = '$s[$i]'";
 $str.= "and wr_is_comment = 0";
 break;
 default:
 $str.= "1=0"; // 항상 거짓
 break;
 }
}

조건 설명

  • case 'ca_name': 검색 대상 필드가 ca_name일 때 실행됩니다.
  • $str.= "$field[$k] = '$s[$i]'";: 전달된 검색어와 분류명이 일치하는지 비교하는 조건을 생성합니다.
  • $str.= "and wr_is_comment = 0";: 댓글 항목을 제외하고 원글 중에서만 분류명 검색이 이루어지도록 조건을 함께 부여합니다.

검색 결과 스킨에서 분류명 출력하기

그누보드 통합 검색 결과 스킨 파일(skin/search/basic/search.skin.php)에서 게시글 제목 앞에 분류명([카테고리명])을 출력하려면 제목 출력 부분에 아래 코드를 추가합니다.

수정 코드

<a href="<?php echo $list[$idx][$i]['href']?><?php echo $comment_href?>" class="sch_res_title"><?php echo $comment_def?><?php if ($list[$idx][$i]['ca_name']) {?>[<?php echo $list[$idx][$i]['ca_name']?>] <?php }?><?php echo $list[$idx][$i]['subject']?></a>

조건 및 확인 사항

  • 게시글에 ca_name 값이 존재하는 경우에만 대괄호로 둘러싸인 분류명이 제목 앞에 출력됩니다.
  • 해당 출력이 정상적으로 동작하려면 검색 폼(head.php)과 검색 처리 파일(bbs/search.php)에서 ca_name 검색 범위 추가 작업이 선행되어야 합니다.

검색 조건 선택 옵션에 제목+내용+카테고리 항목 추가하기

그누보드 검색 페이지에서 사용자가 직접 검색 범위를 선택할 수 있도록 search.skin.php 파일의 검색 조건 선택 옵션(select 박스)에 카테고리를 포함한 항목을 추가할 수 있습니다.

1. search.skin.php 파일 수정

검색 스킨 파일인 search.skin.php에서 검색조건 셀렉트박스 내부에 아래와 같이 ca_name을 포함하는 option 코드를 추가합니다.

<label for="sfl" class="sound_only">검색조건</label>
<select name="sfl" id="sfl">
 <option value="ca_name||wr_subject||wr_content"<?php echo get_selected($_GET['sfl'], "ca_name||wr_subject||wr_content")?>>제목+내용+카테고리</option>
 <option value="wr_subject||wr_content"<?php echo get_selected($_GET['sfl'], "wr_subject||wr_content")?>>제목+내용</option>
 <option value="wr_subject"<?php echo get_selected($_GET['sfl'], "wr_subject")?>>제목</option>
 <option value="wr_content"<?php echo get_selected($_GET['sfl'], "wr_content")?>>내용</option>
 <option value="mb_id"<?php echo get_selected($_GET['sfl'], "mb_id")?>>회원아이디</option>
</select>

주의사항 및 확인 위치

  • ca_name 항목이 셀렉트박스의 제일 앞에 나와야 정상적으로 출력되는 순서 이슈가 있을 수 있으므로 배치 위치에 주의합니다.
  • 해당 수정 후 통합 검색 페이지의 검색 조건 선택 영역에서 '제목+내용+카테고리' 옵션이 정상 노출되는지 확인합니다.

상황별 판단 및 행동 가이드

내 상황우선할 판단다음 행동
통합 검색 시 제목과 내용뿐만 아니라 카테고리 분류명(ca_name)까지 검색 범위에 포함시키고 싶을 때head.php의 검색 폼 내 sfl hidden 필드 값에 ca_name 추가 반영head.php 파일 수정 후 bbs/search.php의 switch문에 ca_name 조건 추가 작업 진행
검색 결과 화면의 게시글 제목 앞에 대괄호 형태의 분류명([카테고리명])을 출력하고 싶을 때search.skin.php 파일 내 제목 출력 영역에 ca_name 존재 여부 확인 코드 삽입skin/search/basic/search.skin.php 파일의 수정 코드를 반영하고 통합 검색 테스트 실행

실전 FAQ

Q. 검색 결과에 댓글이 포함되어 검색되는 것을 방지하려면?

  • bbs/search.php의 switch문 내 case 'ca_name' 블록에 $str.= "and wr_is_comment = 0"; 구문을 추가하면 댓글을 제외하고 원글 내에서만 분류명 검색이 수행됩니다.

Q. 검색 조건 선택 옵션(select box) 구성 시 주의사항은?

  • search.skin.php에서 ca_name을 포함한 옵션을 추가할 때, 해당 항목을 셀렉트박스 최상단에 배치해야 검색 쿼리 처리 시 순서 이슈 없이 정상적으로 동작합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.