各種の検索条件の指定
SearchEntriesプラグインでは、前回までに紹介した以外にも、いくつかの検索条件を指定することができます。
「値が○○ではない」などの検索
ブログ記事のフィールドと、カスタムフィールドの検索では、「値が○○ではない」などの条件で検索するテンプレートタグもあります。
モディファイアの指定方法は、「値が○○である」等のテンプレートタグと同じです。
検索条件 | ブログ記事のフィールド用テンプレートタグ | カスタムフィールド用テンプレートタグ |
値が○○でない | MTSearchConditionNotValues | MTSearchConditionCFNotValues |
値に○○を含まない | MTSearchConditionNotLike | MTSearchConditionCFNotLike |
例えば、タイトルに『Movable Type』を含まないブログ記事を検索して、その一覧を出力する場合は、MTSearchConditionNotLikeタグを使って、以下のようにテンプレートを組みます。
<mt:SearchConditions>
<$mt:SearchConditionNotLike field="title" values="Movable Type"$>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
<ul>
<mt:Entries>
<li><$mt:EntryTitle$></li>
</mt:Entries>
</ul>
</mt:IfNonZero>
公開状態での検索
通常の検索では、公開されているブログ記事だけが検索対象になります。
しかし、下書き等のブログ記事も検索したい場合もあります。
ブログ記事の公開状態(公開や下書きなど)で検索するには、「MTSearchConditionStatus」というテンプレートタグを使います。
このテンプレートタグは、MTSearchConditionsタグのブロック内に書きます。
また、他の条件指定のタグと組み合わせることもできます。
statusモディファイアで、公開状態の条件を指定します。
statusモディファイアに指定する値は、以下の通りです。
公開状態 | 値 |
下書き | draft |
公開 | publish |
承認待ち | review |
日時指定 | future |
例えば、タイトルに「Movable Type」を含み、かつ下書き状態になっているブログ記事を検索するには、以下のようにテンプレートタグを組みます。
<mt:SearchConditions>
<$mt:SearchConditionStatus status="draft"$>
<$mt:SearchConditionLike field="title" values="Movable Type"$>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
<ul>
<mt:Entries>
<li><$mt:EntryTitle$></li>
</mt:Entries>
</ul>
</mt:IfNonZero>
なお、「status="future","review"」のように、複数の公開状態をコンマで区切って指定することもできます。
その場合は、複数の公開状態のどれかに該当するブログ記事が検索対象になります。
また、「status="all"」とすると、公開状態に関係なく、全てのブログ記事を検索対象にすることができます。
複数のブログにまたがる検索
複数のブログにまたがる検索を行うこともできます。
その場合は、MTSearchConditionsタグにinclude_blogsモディファイアを指定します。
include_blogsモディファイアの書き方は、MT標準の複数ブログ対応のテンプレートタグと同じです。
例えば、IDが2番と3番のブログから、タイトルに「Movable Type」を含むブログ記事を検索するには、以下のようにテンプレートを組みます。
<mt:SearchConditions include_blogs="2,3">
<$mt:SearchConditionLike field="title" values="Movable Type"$>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
<ul>
<mt:Entries>
<li><$mt:EntryTitle$>(<$mt:BlogName$>)</li>
</mt:Entries>
</ul> </mt:IfNonZero>
なお、通常の検索では、テンプレートが属するブログ(またはウェブサイト)が検索対象になります。