ブログ記事詳細検索プラグイン(その6・カテゴリのOR検索)

SearchEntriesプラグインでは、ブログ記事をカテゴリで検索することもできます。
今日は、「○○カテゴリか□□カテゴリに属する」というような、カテゴリのOR検索を解説します。

1.MTSearchConditionCategorySectionタグ

カテゴリでの検索を行うには、MTSearchConditionタグのブロックの中に、「MTSearchConditionCategorySection」というタグのブロックを入れます。
そして、そのブロックの中に、カテゴリの検索条件を指定するタグを入れます。

<mt:SearchConditions>
  <mt:SearchConditionCategorySection>
    カテゴリの検索条件を表すテンプレートタグ
  </mt:SearchConditionCategorySection>
</mt:SearchConditions>

2.MTSearchConditionCategoryタグ

カテゴリの名前で検索するには、MTSearchConditionCategorySectionタグのブロックの中で、「MTSearchConditionCategory」というテンプレートタグで条件を指定します。
書き方は以下のようになります。

<$mt:SearchConditionCategory category="カテゴリ名1","カテゴリ名2",・・・"カテゴリ名n"$>

categoryモディファイアに、検索対象のカテゴリの名前をコンマで区切って並べます。
複数のカテゴリを指定した場合、それらのどれか1つのカテゴリに属するブログ記事が検索されます。

例えば、「Movable Type」というカテゴリに属するブログ記事を検索して、その一覧を出力するには、以下のようにテンプレートを組みます。

<mt:SearchConditions>
  <mt:SearchConditionCategorySection>
    <$mt:SearchConditionCategory category="Movable Type"$>
  </mt:SearchConditionCategorySection>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li><$mt:EntryTitle$>(<mt:EntryCategories glue=","><$mt:CategoryLabel$></mt:EntryCategories>)</li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>

また、「『プラグイン』か『カスタマイズ』のカテゴリに属する記事を検索する」という場合だと、上記の例のcategoryモディファイアを「category="プラグイン","カスタマイズ"」と書きます。

3.MTSearchConditionCategoryIDタグ

カテゴリの名前ではなく、IDで検索したい場合は、「MTSearchConditionCategoryID」というテンプレートタグを使います。
書き方は以下のようになります。

<$mt:SearchConditionCategoryID include_cat_ids="ID1,ID2,・・・IDn"$>

include_cat_idsモディファイアに、カテゴリのIDをコンマで区切って並べます。
カテゴリのIDを複数指定すると、そのどれかのカテゴリに属するブログ記事が検索されます。

例えば、IDが1番か2番のカテゴリに属するブログ記事を検索するなら、以下のようにテンプレートを組みます。

<mt:SearchConditions>
  <mt:SearchConditionCategorySection>
    <$mt:SearchConditionCategoryID include_cat_ids="1,2"$>
  </mt:SearchConditionCategorySection>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li><$mt:EntryTitle$>(<mt:EntryCategories glue=","><$mt:CategoryID$></mt:EntryCategories>)</li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>

4.ブログ記事のフィールドでの検索と組み合わせる

MTSearchConditionCategorySectionタグのブロックと、MTSearchConditionValues等のタグを組み合わせて、ブログ記事のフィールドの条件とカテゴリの条件の両方を指定することもできます。
その場合は、MTSearchConditionsタグのブロックの中で、MTSearchConditionValues等のタグと、MTSearchConditionCategorySectionタグのブロックを、続けて書きます。

<mt:SearchConditions>
  ブログ記事のフィールドの検索条件を表すテンプレートタグ
  <mt:SearchConditionCategorySection>
    カテゴリの検索条件を表すテンプレートタグ
  </mt:SearchConditionCategorySection>
</mt:SearchConditions>

例えば、「Movable Type」カテゴリに属し、かつタイトルに「プラグイン」を含むブログ記事を検索して出力する場合だと、以下のようにテンプレートを組みます。

<mt:SearchConditions>
  <$mt:SearchConditionLike field="title" values="プラグイン"$>
  <mt:SearchConditionCategorySection>
    <$mt:SearchConditionCategory category="Movable Type"$>
  </mt:SearchConditionCategorySection>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li><$mt:EntryTitle$>(<mt:EntryCategories glue=","><$mt:CategoryLabel$></mt:EntryCategories>)</li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>

5.SearchEntriesプラグイン関係の記事の一覧

SearchEntriesプラグイン関係のその他の記事は、以下のリンクから参照できます。

MT Cloud Starter Kit
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください