2009年07月28日
AltSearch でキーワードなしのカテゴリ指定検索を実装する
アルファサードの近藤です。ドラクエ 9 がクリア目前にして、他の人と一緒にプレイすることの面白さに気づいてしまいました。
本日、サポートに「AltSearch でカテゴリ指定だけで検索できるようにしたいんだけど」というお問合せがありました。もちろん可能です。PowerCMS 同梱のテンプレートセット標準を想定した場合、以下のようにすることで実現できます。
テンプレート編集画面を開く
PowerCMS のテンプレートセットを適用した状態で、インデックステンプレートの「検索結果(ダイナミック)」編集画面に進みます。
検索キーワードがなくても表示できるようにする
まず、
<MTIfAltSearchquery> 〜 </MTIfAltSearchquery>
があると、検索キーワードがある場合のみこのブロックタグ内が表示されますので、このタグを削除します。表示を制御する
さらに、このタグを削除した状態では検索パラメータ無しの状態ですべての結果が表示されてしまいますので、フォーム送信によりかならず送られるパラメータがあるかないかで表示分岐させるよう、上記タグがあった場所に記述します。
以下では、パラメータ limit があれば表示する場合の例です。<MTSetVarBlock name="limit"><MTAltSearchParam name="limit"></MTSetVarBlock> <MTIf name="limit"> パラメータ limit があれば表示 </MTIf>
保存する
ここまでできたら編集内容を保存しましょう。
確認する
http://example.com/blog/dynamic/search.html
にアクセスして、キーワードなしのカテゴリ指定検索ができることを確認しましょう。ちゃんとできてるはずなのに反映されていない場合は、検索キャッシュをクリアしてみてください。
このようにすることで、キーワードなしのカテゴリ指定検索を実現することができます。キーワード入力欄が不要になる場合はテンプレートから削除してください。
AltSearch は Movable Type 標準の mt-search.cgi に比べ、高速であることと、パラメータの送り方・受け取り方と各エントリへのデータの持たせ方で様々な工夫ができることが魅力です。ぜひ一度、テンプレートをカスタマイズしてみることをオススメします。
- カテゴリー
- テンプレート作成Tips
コメントを投稿する