>  기사  >  백엔드 개발  >  phpcms 검색 기능 구현

phpcms 검색 기능 구현

不言
不言원래의
2018-04-28 09:37:225406검색

이 글에 소개된 내용은 phpcms의 검색 기능 구현에 관한 내용입니다. 이제 모든 사람과 공유합니다. 도움이 필요한 친구들이 참고할 수 있습니다.

최근 포털 사이트를 구축하고 있습니다. 예전부터 이 기능을 구현하고 싶었지만 마음을 진정시키고 phpcms의 구현 원리를 연구하기 위해 애썼습니다. 오늘은 이 블로그를 통해 분석 과정을 기록해 보겠습니다. 상대적으로 분산되어 있어 항상 혼란스럽습니다. 제가 하는 일은 좀 더 체계적인 요약입니다.

검색 기능 관련 파일

phpcms 검색 기능의 배경 템플릿은 phpcmsmodulessearch 경로에 있습니다. 이 경로에 검색 결과를 표시하는 몇 가지 방법이 있습니다. 예를 들어, 우리가 일반적으로 사용하는 init 메소드는 index.php
의 구성 메소드에서 따왔습니다. $this->db =pc_base::load_model('search_model'); index.php는 데이터베이스 접두사 _search 이름 테이블을 사용하는 것을 확인할 수 있습니다
phpcms 검색 기능의 프런트 엔드 템플릿은 phpcmstemplatesdefaultsearch에 있습니다. 이 경로에는 index.html, footer.html, header.html 및 list.html이라는 4개의 파일이 있습니다. 검색결과가 없을 때 호출되는 표시 페이지, header.html 및 footer.html은 출력된 검색 결과의 머리글과 바닥글 부분을 나타내고, list.html은 검색 결과가 발견된 후 호출되는 표시 페이지를 나타냅니다

뒷면 수정 -end template

phpcms의 검색 기능으로 주로 사용되는데 mysql의 퍼지 쿼리 기능과의 매칭을 사용하는데 이 기능은 중국어 정보가 포함된 콘텐츠를 쿼리하는 경우 올바르지 않고 지원도 좋지 않습니다. 그래서 이 코드 부분을 차단했습니다. 구체적인 차단 방법은 phpcmsmodulessearchindex.php 파일을 열고 약 84줄을 찾아 다음 코드를 주석 처리하는 것입니다.

//如果分词结果为空
if(!empty($segment_q)) {
    $sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND MATCH (`data`) AGAINST ('$segment_q' IN BOOLEAN MODE)";
} else {
    $sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";
}

이 코드 뒤에 다음 코드를 추가합니다.

$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";

프런트엔드 코드 수정

프런트엔드 코드 수정은 phpcmstemplatesdefaultsearchindex.html 파일을 참고하시면 됩니다. 원본 index.html 파일을 확인하여 아래와 같이 쿼리 함수 양식 제출과 관련된 코드를 찾아보세요.

<form name="search" type="get">
    <input type="hidden" name="m" value="search"/>
    <input type="hidden" name="c" value="index"/>
    <input type="hidden" name="a" value="init"/>
    <input type="hidden" name="typeid" value="{$typeid}" id="typeid"/>
    <input type="hidden" name="siteid" value="{$siteid}" id="siteid"/>
        <p class="sr_frm">
           <p class="sr_frm_box">
               <p class="sr_frmipt"><input type="text" name="q" id="q" class="ipt">
                  <p class="sp" id="aca">
                  </p><input type="submit" class="ss_btn" value="搜 索">           
                      </p>
                  </p>
               <p id="sr_infos" class="wrap sr_infoul">
           </p>
         </p>
</form>

코드의 이 부분에서는 입력 유형 속성이 숨겨집니다. URL에서 이 부분은 양식을 통해 제출되지 않습니다. 예를 들어 검색 버튼이 포함된 URL은 http://localhost/startwill/index.php?m=content&c=index&a=lists&catid =41입니다. 검색 상자에 product라는 단어를 입력하면 리디렉션된 URL은 다음과 같습니다. : http://localhost/startwill/index.php?m=search&c=index&a=init&typeid=3&siteid=1&q=product, 여기서 m, c, a, typeid, siteid 값은 모두 숨겨진 메소드를 통해 제출되며, q의 값은 검색창을 통해 입력되는 반면, 자체 페이지에서 이를 사용하면 위의 코드를 모방할 수 있습니다.

표시 코드 수정

phpcmstemplatesdefaultsearchlist.html을 참조하여 phpcms의 표시 코드를 구현할 수 있으며, list.html에서 {loop

r}을 통해 검색된 결과 값을 얻을 수 있습니다. $ 데이터에 저장되는 콘텐츠 필드는 다음과 같습니다.
phpcms 검색 기능 구현
이러한 필드 정보를 사용하여 list.html 표시 페이지에서 원하는 모든 작업을 수행할 수 있습니다.
여기서 특별한 주의가 필요한 것은 우리 자신의 list.html에 코드를 작성할 때 루프 루프를 사용할 수 있지만 data를 사용하여 우리 자신이 통과한 값을 저장한 다음 검색을 통해 값을 덮어쓰며, 전체 페이지에 사용자가 지정한 값이 표시됩니다.


위 내용은 phpcms 검색 기능 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.