SearchEntries

対応バージョン:MovableType7

検索結果表示テンプレート作成の基本

更新日:2024.02.01

検索フォームの次に、フォームから送信された条件に沿って検索結果を表示するように、テンプレートを作ります。
その基本的な手順を解説します。

検索条件が動的に変化する

フォームを使って検索する場合も、検索結果を表示するテンプレートにMTSearchConditionsタグのブロックを入れて、検索条件を指定します。
ただ、これまでの事例とは異なり、フォームの入力内容によって、検索条件が動的に変化します。
その点に対応する必要があります。
例えば、「ブログ記事のタイトルに○○が含まれる」という条件で検索したい場合だと、MTSearchConditionsタグのブロックを以下のように書きます。

<mt:SearchConditions>
  <$mt:SearchConditionLike field="title" values="○○"$>
</mt:SearchConditions>

この「values="○○"」の部分を、フォームで入力されたキーワードに置き換えれば、フォームに沿った検索を行うことができます。

フォームで入力された内容を変数で表す

上で述べたように、検索フォームを使って検索する場合、フォームの内容に沿って検索条件を動的に変える必要があります。
そこで、フォームで入力された内容を変数に代入するようにします。
そして、MTSearchConditionsタグのブロックでは、変数を使って条件を指定するようにします。
フォームの入力内容を変数に代入するには、「MTGetQueryParamsToVars」というテンプレートタグを使います。
このタグは、GetQueryParamプラグインによって追加されます。
MTGetQueryParamsToVarsタグを実行すると、フォーム内の各入力要素の値が、「qp_要素のname属性」という名前の変数に代入されます。
例えば、以下のように、検索フォームに「title」というname属性の要素を入れたとします。

<input type="text" id="title" name="title" />

この場合だと、name属性は「title」です。
したがって、MTGetQueryParamsToVarsタグを実行すると、この要素で入力された値は、「qp_title」という名前の変数に代入されます。

MTSearchConditionsブロックの組み方の例

変数に代入された値を、検索条件のタグに指定すれば、フォームの入力内容に沿った検索を行うことができます。
例えば、「ブログ記事のタイトルに○○が含まれる」という条件で検索したいとします。
また、検索フォームでは、「○○」を入力するテキスト欄に、「title」というname属性を付けているとします。
この場合、MTSearchConditionsブロックを以下のように組みます。

<$mt:GetQueryParamsToVars$>
<mt:SearchConditions>
  <$mt:SearchConditionLike field="title" values="$qp_title"$>
</mt:SearchConditions>

1行目のMTGetQueryParamsToVarsタグによって、フォームで入力された内容が変数に代入されます。
そして、3行目のMTSearchConditionLikeタグで、valuesモディファイアに変数qp_title(フォームの「title」の欄に入力された値)を指定しています。
なお、検索結果のテンプレートの入力方法や、フォームから検索結果テンプレートを呼び出せるようにする手順は、次回に解説します。

前へ
プラグインTOP
次へ
目次
test