ブログ記事詳細検索プラグイン(その4・「ブログ記事のフィールドの値が○○以上」等の場合の検索)

SearchEntriesプラグインの第4回として、「ブログ記事のフィールドの値が○○以上」等の条件で検索する方法を解説します。

1.1つの値と比較する

「ブログ記事のフィールドの値が○○以上」等の条件で検索するには、「SearchConditionCompare」というタグを使います。
1つの値と比較する場合は、書き方は以下のようになります。

<$mt:SearchConditionCompare field="フィールド名" 演算子="値"$>

fieldモディファイアの「フィールド名」には、ブログ記事のフィールドを表す値を、以下の表から指定します。

フィールドフィールド名
IDid
タイトルtitle
本文text
続きtext_more
概要excerpt
キーワードkeywords
公開日authored_on
最終更新日modified_on
出力ファイル名basename
ユーザーのIDauthor_id
フォーマットconvert_breaks
コメント数comment_count
トラックバック数ping_count

また、「演算子」と「値」で、比較の「演算子」は以下の表から指定します。

比較方法演算子
○○より大きい(>)gt
○○より小さい(<)lt
○○以上(≧)ge
○○以下(≦)le

例えば、「コメントがついているブログ記事」を検索して出力したいとします。
「コメントがついている」という条件は、「コメントが1件以上」という条件と同じです。
したがって、以下のようにテンプレートタグを組みます。

<mt:SearchConditions>
  <$mt:SearchConditionCompare field="comment_count" ge="1"$>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li><$mt:EntryTitle$>, <$mt:EntryCommentCount$></li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>

日付のフィールド(authored_onなど)を条件判断に使いたい場合は、年月日時分秒をつなげて14桁の数値で表します(年4桁、その他各2桁)。
例えば、「2010年以降に書いたブログ記事」を検索したいとします。
この条件は、「authored_onフィールド(公開日時)の値が20100101000000(2010年1月1日0時0分0秒)以上」と表すことができますので、MTSearchConditionCompareタグを以下のように書きます。

<$mt:SearchConditionCompare field="authored_on" ge="20100101000000"$>

2.2つの値と比較する

MTSearchConditionCompareタグにlt等のモディファイアを2つ指定すれば、「○○以上□□以下」などの条件を指定することもできます。

例えば、「2010年4月に書いたブログ記事」を検索したいとします。
この条件は、「authored_onフィールドの値が20100401000000(2010年4月1日0時0分0秒)以上で、かつ2010050100000(2010年5月1日0時0分0秒未満)」と表すことができます。
したがって、MTSearchConditionCompareタグを以下のように書きます。

<$mt:SearchConditionCompare field="authored_on" ge="20100401000000" lt="20100501000000"$>

なお、MTSearchConditionValuesタグでは、「フィールドの値が0」という条件を指定することができませんでした。
この条件は、MTSearchConditionCompareタグを使って、「0以上0以下」という条件で指定することができます。
例えば、「コメントがついていない(=comment_countフィールドの値が0)」という条件は、以下のように指定します。

<$mt:SearchConditionCompare field="comment_count" ge="0" le="0"$>

3.MTSearchConditionValues/MTSearchConditionLikeタグとの組み合わせ

MTSearchConditionCompareタグは、MTSearchConditionValuesタグやMTSearchConditionLikeタグと組み合わせることもできます。
例えば、以下の条件でブログ記事を検索して出力したいとします。

  • IDが1番のユーザーが書いた
  • タイトルに「Movable Type」か「MT」を含む
  • 2010年4月に書いた

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

<mt:SearchConditions>
  <$mt:SearchConditionValues field="author_id" values="1"$>
  <$mt:SearchConditionLike field="title" values="Movable Type,MT"$>
  <$mt:SearchConditionCompare field="authored_on" ge="20100401000000" lt="20100501000000"$>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li><$mt:EntryTitle$>, <$mt:EntryAuthorID$>, <$mt:EntryDate$></li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>

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

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

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