ホームページ  >  記事  >  バックエンド開発  >  phpcms検索機能の実装

phpcms検索機能の実装

不言
不言オリジナル
2018-04-28 09:37:225410ブラウズ

この記事で紹介した内容は、phpcms の検索機能の実装に関するもので、困っている人は参考にしてください。

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 は 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 の値はすべて hidden 経由で送信されます。 q の値は検索ボックスに入力しますが、これを自分のページで使用する場合は、上記のコードを模倣できます。

表示コードを変更する

phpcmsの表示コードはphpcmstemplatesdefaultsearchlist.htmlを参照することで実装でき、list.htmlでは{loop

r}により検索結果の値を取得することができます。 $ データに格納されるコンテンツフィールドは次のとおりです:


これらのフィールド情報を使用すると、list.html 表示ページで必要なことを何でも行うことができます。 phpcms検索機能の実装 ここで特別な注意が必要なのは、独自の list.html にコードを記述する場合、loop ループを使用できますが、自分自身が走査した値を保存するために

data を使用しないでください。検索による値 値は上書きされ、割り当てた値がページ全体に表示されます。


以上がphpcms検索機能の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。