カスタムフィールドの値で検索する( 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>

カスタムフィールドの検索で出来ること

カスタムフィールドを元にした検索データベースが作成できます。エントリーに商品情報(値段・色・種類など)や、店舗情報(地域・取り扱い品・営業時間など)を登録することで商品や店舗の情報をエントリーとしてまとめて取り扱うことができます。

またそれらを検索できるようにすることでエンドユーザーからの情報の検索性を高めることも可能になります。サンプルファイルを参考に、ぜひ実装してみてください。


関連

イントロダクション

はじめてみよう

リファレンス

コア機能

機能別

開発