カスタムフィールドの値で検索する( Field_Searchモジュール )
カスタムフィールドの情報を元にサイト検索を実装する
a-blog cmsのカスタムフィールドの情報は、サイト内検索の対象にすることができます。前回のモジュールIDとカスタムフィールドを利用した情報の絞り込みと同じ事を、検索窓というエンドユーザー側のインターフェースから行えます。
今回は、そのカスタムフィールド検索のサンプルファイルについて紹介します。
検索のサンプルファイルについて
/themes/sample@blog2014/search/form.html ※動作確認する際はテーマ設定を「sample@blog2014」テーマに設定してください。
Field_Searchモジュール
Field_Searchモジュールを利用することで、カスタムフィールドの値を使って記事を検索することができます。 /themes/sample@blog2014/search/form.html を一部抜粋 priceというカスタムフィールドを対象に検索を行っています。
<!-- BEGIN_MODULE Field_Search --> <dl> <dt>簡単な検索</dt> <dd> <form action="" method="post"> <!-- 宣言 --> <input type="hidden" name="field[]" value="price" /> <p>価格 <label for="input-radio-price-100"> <input type="radio" name="price" value="100"{price:checked#100} id="input-radio-price-100" />100 </label> <label for="input-radio-price-200"> <input type="radio" name="price" value="200"{price:checked#200} id="input-radio-price-200" />200 </label> <label for="input-radio-price-300"> <input type="radio" name="price" value="300"{price:checked#300} id="input-radio-price-300" />300 </label> </p> <p> <input type="hidden" name="tpl" value="search" /> <input type="hidden" name="cid" value="%{CID}" /> <input type="hidden" name="bid" value="%{BID}" /> <input type="submit" name="ACMS_POST_2GET" value="search" /> </p> </form> </dd> </dl> <!-- END_MODULE Field_Search -->
サンプルのファイルを見ると分かるように、検索用の項目はカスタムフィールドの入力側の画面と同じように記述します。すでにエントリー編集ページにカスタムフィールド項目を追加してあれば、その部分をコピーしてしまっても良いでしょう。
POST_2GET
データの送信先になるPOSTモジュールにはACMS_POST_2GETを指定します。サンプルファイルからコピーして特に編集する必要はない部分です。
<input type="submit" name="ACMS_POST_2GET" value="search" />
検索対象のエントリー作成しましょう
**/themes/sample@blog2014/admin/entry/field.html **に価格({price})のカスタムフィールドが用意されています。 エントリーに価格({price})の値を入れていきましょう。 http://ドメイン/search/ でアクセスするとpriceを検索するフォームが表示されます。
<table class="entryFormTable"> <tr> <th>価格</th> <td> <input type="text" name="price" value="{price}" size="10" /> <input type="hidden" name="field[]" value="price" /> </td> </tr> </table>
カスタムフィールドの検索で出来ること
カスタムフィールドを元にした検索データベースが作成できます。エントリーに商品情報(値段・色・種類など)や、店舗情報(地域・取り扱い品・営業時間など)を登録することで商品や店舗の情報をエントリーとしてまとめて取り扱うことができます。
またそれらを検索できるようにすることでエンドユーザーからの情報の検索性を高めることも可能になります。サンプルファイルを参考に、ぜひ実装してみてください。