SearchEntries

対応バージョン:MovableType7

ブログ記事のフィールドどうしでのOR検索

更新日:2024.02.02

SearchEntriesプラグインでは、「ブログ記事のタイトル/本文/続きのどれかに『Movable Type』が含まれている」などの、フィールドどうしでのOR検索を行うこともできます。

MTSearchConditionUnionタグ

これまでに取り上げてきた検索条件のタグ(MTSearchConditionValues等)を単に複数回書くと、AND検索になります。
しかし、AND検索ではなくOR検索を行いたい場合もあります(この記事の冒頭にあげた例など)。
その場合は、検索条件のタグとタグの間に、「<$mt:SearchConditionUnion op="or"$>」というテンプレートタグを入れます。
例えば、冒頭で挙げた例だと、以下のように書きます。

<mt:SearchConditions>
  <$mt:SearchConditionLike field="title" values="Movable Type"$>
  <$mt:SearchConditionUnion op="or"$>
  <$mt:SearchConditionLike field="text" values="Movable Type"$>
  <$mt:SearchConditionUnion op="or"$>
  <$mt:SearchConditionLike field="text_more" values="Movable Type"$>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li>
      <h1><$mt:EntryTitle$></h1>
      <div><$mt:EntryBody$></div>
      <div><$mt:EntryMore$></div>
    </li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>

MTSearchConditionSectionタグ

ORで結んだいくつかの条件を、他の条件とAND検索したい場合もあります。
そのような場合には、OR条件の部分を「MTSearchConditionSection」というタグのブロックで囲みます。
例えば、「タイトル/本文/続きのどれかに『Movable Type』を含み、かつコメント/トラックバックのどちらかがついている」というブログ記事を検索したいとします。
これは、以下の2つのOR検索の間を、AND検索で結ぶ形になっています。

  • タイトル/本文/続きのどれかに『Movable Type』を含む
  • コメント数またはトラックバック数が1以上

そこで、2つのOR検索の部分を、それぞれMTSearchConditionSectionタグのブロックで囲みます。
タグを組むと以下のようになります。

<mt:SearchConditions>
  <mt:SearchConditionSection>
    <$mt:SearchConditionLike field="title" values="Movable Type"$>
    <$mt:SearchConditionUnion op="or"$>
    <$mt:SearchConditionLike field="text" values="Movable Type"$>
    <$mt:SearchConditionUnion op="or"$>
    <$mt:SearchConditionLike field="text_more" values="Movable Type"$>
  </mt:SearchConditionSection>
  <mt:SearchConditionSection>
    <$mt:SearchConditionCompare field="comment_count" ge="1"$>
    <$mt:SearchConditionUnion op="or"$>
    <$mt:SearchConditionCompare field="ping_count" ge="1"$>
  </mt:SearchConditionSection>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li>
      <h1><$mt:EntryTitle$>(コメント:<$mt:EntryCommentCount$> トラックバック:<$mt:EntryTrackbackCount$>)</h1>
      <div><$mt:EntryBody$></div>
      <div><$mt:EntryMore$></div>
    </li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>
前へ
プラグインTOP
次へ
目次