ブログ記事詳細検索プラグイン(その10・カスタムフィールドでの検索の応用)

SearchEntriesプラグインでは、複数のカスタムフィールドを組み合わせた検索や、ブログ記事標準のフィールド/カテゴリ/タグを組み合わせた検索も可能です。

1.複数のカスタムフィールドを組み合わせた検索

複数のカスタムフィールドを組み合わせて検索するには、カスタムフィールドの数だけ、MTSearchConditionCFSectionタグを繰り返し書きます。

例えば、以下のようにカスタムフィールドを定義しているとします。

カスタムフィールドカスタムフィールドの種類ベースネームテンプレートタグ
値段整数entry_priceMTEntryPrice
サイズテキストentry_sizeMTEntrySize
おすすめチェックボックスentry_recommendMTEntryRecommend

この状況で、以下のすべての条件を満たすブログ記事を検索したいとします。

  • 「おすすめ」のチェックボックスがオンになっている(entry_recommendカスタムフィールドの値が1)
  • SかMのサイズがある(entry_sizeカスタムフィールドの値にSかMを含む)
  • 1,000円以上2,000円未満(entry_priceカスタムフィールドの値が1,000以上)2,000未満

この場合、3つのカスタムフィールドそれぞれに対して、MTSearchConditionCFSectionタグのブロックを作り、以下のようにテンプレートタグを組みます。

<mt:SearchConditions>
  <mt:SearchConditionCFSection field="entry_recommend">
    <$mt:SearchConditionCFNotValues values="1"$>
  </mt:SearchConditionCFSection>
  <mt:SearchConditionCFSection field="entry_size">
    <$mt:SearchConditionCFLike values="S,M"$>
  </mt:SearchConditionCFSection>
  <mt:SearchConditionCFSection field="entry_price">
    <$mt:SearchConditionCFCompare ge="1000" lt="2000"$>
  </mt:SearchConditionCFSection>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li><$mt:EntryTitle$>(<$mt:EntryRecommend$>)(<$mt:EntrySize$>)(<$mt:EntryPrice$>)</li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>

2.ブログ記事標準のフィールド/カテゴリ/タグを組み合わせた検索

MTSearchConditionタグのブロックの中に、ブログ記事のフィールド/カテゴリ/タグ/カスタムフィールドの条件を続けて書くことで、それら全ての条件を満たすブログ記事を検索することができます。

例えば、前述の例に、さらに以下の条件を追加するとします。

  • タイトルに「Tシャツ」を含む
  • カテゴリが「シャツ」
  • 「Vネック」のタグが付いている

この場合、以下のようにテンプレートを組みます。

<mt:SearchConditions>
  <$mt:SearchConditionLike field="title" values="Tシャツ"$>
  <mt:SearchConditionCategorySection>
    <$mt:SearchConditionCategory category="シャツ"$>
  </mt:SearchConditionCategorySection>
  <mt:SearchConditionTagSection>
    <$mt:SearchConditionTag tag="Vネック"$>
  </mt:SearchConditionTagSection>
  <mt:SearchConditionCFSection field="entry_recommend">
    <$mt:SearchConditionCFNotValues values="1"$>
  </mt:SearchConditionCFSection>
  <mt:SearchConditionCFSection field="entry_size">
    <$mt:SearchConditionCFLike values="S,M"$>
  </mt:SearchConditionCFSection>
  <mt:SearchConditionCFSection field="entry_price">
    <$mt:SearchConditionCFCompare ge="1000" lt="2000"$>
  </mt:SearchConditionCFSection>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li>
      <$mt:EntryTitle$>
      (<mt:EntryCategories glue=","><$mt:CategoryLabel$></mt:EntryCategories>)
      (<mt:EntryTags glue=","><$mt:TagName$></mt:EntryTags>)
      (<$mt:EntryRecommend$>)
      (<$mt:EntryIntData$>)
      (<$mt:EntrySize$>)
    </li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>

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

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

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