この記事で紹介した内容は、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 は検索結果が見つかった後に呼び出される表示ページを表します
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%'"; }
フロントエンド コードを変更するには、phpcmstemplatesdefaultsearchindex.html ファイルを参照し、元の Index.html ファイルを確認して、次のようにクエリ関数フォームの送信に関連付けられているコードを見つけます。以下:このコードの後に次のコードを追加します。
フロントエンド コードを変更する$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";ログイン後にコピー
コードのこの部分では、フォームを送信するときにコンテンツがデフォルトで追加されますが、この部分はフォームを通じて送信されません。私自身を例に挙げると、検索ボタンを含む 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 の値は検索ボックスに入力しますが、これを自分のページで使用する場合は、上記のコードを模倣できます。<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>ログイン後にコピー表示コードを変更するphpcmsの表示コードはphpcmstemplatesdefaultsearchlist.htmlを参照することで実装でき、list.htmlでは{loopr}により検索結果の値を取得することができます。 $ データに格納されるコンテンツフィールドは次のとおりです:
これらのフィールド情報を使用すると、list.html 表示ページで必要なことを何でも行うことができます。 ここで特別な注意が必要なのは、独自の list.html にコードを記述する場合、loop ループを使用できますが、自分自身が走査した値を保存するために
data を使用しないでください。検索による値 値は上書きされ、割り当てた値がページ全体に表示されます。
以上がphpcms検索機能の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。