BOARD

팁·활용

그누보드 게시판 및 전체 검색 결과에 여분 필드 포함하는 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 36회 작성일 26-09-15 00:08

본문

그누보드 게시판 및 전체 검색 결과에 여분 필드 포함하는 방법

그누보드 기본 검색에 포함되지 않는 wr1, wr2 등 여분 필드를 상단 통합 검색과 개별 게시판 검색 결과에 반영하도록 폼, 서버 로직, 스킨 파일을 단계별로 수정하는 방법을 알아봅니다.

상단 검색 폼(head.php) 수정 방법

사이트 상단의 통합 검색 폼에서 여분 필드를 검색 범위에 포함시키려면 히든(hidden) 필드의 sfl 값을 확장하여 전달해야 합니다.

수정 위치 및 코드

작업 전 반드시 원본 파일을 백업한 후, head.php 파일의 검색 폼 내 hidden 필드 값을 아래와 같이 수정합니다.

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

특정 게시판을 지정해서 검색하도록 유도하려면 bo_table 값을 히든 필드로 추가할 수 있습니다.

<input type="hidden" name="bo_table" value="free">

다음 행동 및 주의사항

  • 상단 검색 폼 수정 후에는 서버 측 검색 처리 파일인 bbs/search.php와 검색 스킨 파일을 이어서 수정해야 전체 검색 및 개별 게시판 검색 결과에 여분 필드가 정상 반영됩니다.
  • 본 방법은 단일 게시판 또는 전체 통합 검색 환경에서 확인된 사례를 기준으로 합니다. 다중 게시판을 동시에 복수 지정하여 검색하는 기능은 기본 팁 내용으로 구현되지 않으므로 별도의 커스텀 개발이 필요합니다.

서버 검색 로직(bbs/search.php) 수정 방법

서버 측 검색 처리 파일인 bbs/search.php의 switch 문에서 여분 필드 파라미터를 쿼리 생성 루틴이 정상적으로 처리할 수 있도록 case 조건에 wr_1과 wr_2를 추가해야 합니다.

작업을 시작하기 전 반드시 원본 파일을 백업한 후, 쿼리 생성 루틴의 switch ($field[$k]) 구문 아래에 다음 코드를 적용합니다.

switch ($field[$k]) {
    case 'mb_id' :
    case 'wr_name' :
        $str .= "$field[$k] = '$s[$i]'";
        break;
    case 'wr_subject' :
    case 'wr_content' :
    case 'wr_1' :
    case 'wr_2' :
        if (preg_match("/[a-zA-Z]/", $search_str)) 
            $str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";
        else 
            $str .= "INSTR({$field[$k]}, '{$search_str}')";
        break;
}

다음 행동 및 확인 사항

  • bbs/search.php 파일 수정 후, 상단 검색 폼(head.php)과 검색 스킨 파일(list.skin.php, search.skin.php)의 여분 필드 설정도 함께 일치시켜야 정상적인 검색 결과를 얻을 수 있습니다.
  • 수정 완료 후 전체 검색 페이지 또는 게시판 검색창에서 여분 필드 값(예: wr_1)을 입력하여 결과가 올바르게 출력되는지 테스트합니다.

게시판 및 전체 검색 스킨 파일 수정 방법

게시판 목록 하단의 list.skin.php 또는 전체 검색 스킨인 skin/search/basic/search.skin.php 파일의 select 박스에 여분 필드 옵션을 추가하여 사용자가 직접 검색 필드를 선택할 수 있도록 구성합니다.

스킨 코드 수정 예시

검색 스킨 파일 내의 <select name="sfl" id="sfl"> 요소 안에 아래와 같이 여분 필드 옵션을 추가합니다.

<select name="sfl" id="sfl">
    <option value="wr_1"<?php echo get_selected($sfl, 'wr_1'); ?>>여분필드1</option>
    <option value="wr_2"<?php echo get_selected($sfl, 'wr_2'); ?>>여분필드2</option>
    <option value="wr_subject||wr_content||wr_1"<?php echo get_selected($_GET['sfl'], "wr_subject||wr_content||wr_1") ?>>제목+내용+여분필드1</option>
</select>

적용 후 확인 및 주의사항

수정 완료 후 전체 검색 페이지 또는 게시판 검색창에서 여분 필드 값(예: wr_1)을 선택하고 검색어를 입력하여 정상적으로 결과가 출력되는지 테스트합니다. 본 방법은 단일 게시판 또는 전체 통합 검색 환경을 기준으로 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.