CMS/그누보드

검색 옵션(검색어)에 카테고리명 추가

1. main 검색창에 form 삽입

- input value에 변수 ca_name 추가 (카테고리명)

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

- fieldset : form 내부 요소들을 묶어줄 때 사용 

  legend : fieldset 의 제목 

  developer.mozilla.org/ko/docs/Web/HTML/Element/fieldset

<fieldset id="hd_sch">
  <legend>사이트 내 전체검색</legend>
  <form name="fsearchbox" method="get" action="<?php echo G5_BBS_URL ?>/search.php" onsubmit="return fsearchbox_submit(this);">
  <input type="hidden" name="sfl" value="ca_name||wr_subject||wr_content">
  <input type="hidden" name="sop" value="and">
  <label for="sch_stx" class="sound_only">검색어 필수</label>
  <input type="text" name="stx" id="sch_stx" maxlength="20" placeholder="검색어를 입력해주세요">
  <button type="submit" id="sch_submit" value="검색"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">검색</span></button>
  </form>

  <script>
  function fsearchbox_submit(f)
  {
  if (f.stx.value.length < 2) {
  alert("검색어는 두글자 이상 입력하십시오.");
  f.stx.select();
  f.stx.focus();
  return false;
  }

  // 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
  var cnt = 0;
  for (var i=0; i<f.stx.value.length; i++) {
  if (f.stx.value.charAt(i) == ' ')
  cnt++;
  }

  if (cnt > 1) {
  alert("빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.");
  f.stx.select();
  f.stx.focus();
  return false;
  }

  return true;
  }
  </script>
  </fieldset>

 

 

2. bbs/search.php 파일 수정 : 아래 내용에서 빨간색 부분 추가

// 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
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;
    }

 

 

 

3. skin/search/basic/search.skin.php 파일 수정 : 검색조건에 ca_name 추가 

- 이 때, ca_name이 제일 앞에 나와야 정상 출력됨 (순서 이슈 있음!)

<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>
  <option value="wr_name"<?php echo get_selected($_GET['sfl'], "wr_name") ?>>이름</option> -->
</select>

 

 

*출처

gnustudy.com/bbs/board.php?bo_table=skin_etc&wr_id=15

 

전체 검색에서 카테고리도 검색에 포함하기 - 기타스킨강좌, 그누보드5강좌

분류명도 전체 검색에 반영하는 방법입니다.1. head.php 파일 수정검색 폼 수정 ca_name 추가됨

2. bbs/search.php 파일 수정아래 내용에서 빨간색 부

gnustudy.com