PowerCMS X ブログ
2021-03-23
オブジェクトをループ出力するタグ (例 : mt:entries) では、さまざまなタグ属性によってフィルタリングが可能となっています。バージョンアップで指定できる属性が増えていますので、整理する意味で利用できるフィルタをご紹介します。まず、以下はMTMLReferenceプラグインによる mt:entriesのドキュメントです。
タグ | 説明 | タグ属性 |
---|---|---|
<mt:entries> ~ </mt:entries> | '記事' オブジェクトをループ出力します。
予約変数
|
|
モデルのカラム名を属性に指定して完全一致するもののみを絞り込みます(以下に紹介するフィルタはすべて組み合わせて使うことができます)。
<mt:entries title="記事のタイトル" keywords="記事のキーワード">
<mt:entrytitle>
</mt:entries>
ver.2.5からは、リレーション型のカラムも指定できるようになりました。以前のように「mt:setcontext」ブロックで囲む必要はなくなりました。AND | OR | NOT指定ができ、属性名はカラム名(categories, tags)でもモデル名(category, tag)でも構いません。もちろんリレーション以外のカラム名の属性と併用することができます。
<mt:entries categories="カテゴリ名1 OR カテゴリ名2" tags="タグ名1 AND タグ名2">
<mt:entrytitle>
</entries>
単一指定の時、階層付きモデルの属性値に「/」を付けることで、パスの指定が可能です。
<mt:entries category="プレスリリース/PowerCMS X">
<mt:entrytitle>
</entries>
options属性で "カラム名1", "値1","カラム名2", "値2"... のような配列を渡すことで複数のカラムの値によるフィルタをまとめて指定することができます。
<mt:setvar name="options" value="title">
<mt:setvar name="options" value="記事のタイトル" function="push">
<mt:setvar name="options" value="keywords" function="push">
<mt:setvar name="options" value="記事のキーワード" function="push">
<mt:entries options="$options">
<mt:entrytitle>
</mt:entries>
# CSVで渡す場合
<mt:entries options="'title','記事のタイトル','keywords','記事のキーワード'">
<mt:entrytitle>
</mt:entries>
フィールド(カスタムフィールド)をフィルタリングに利用することができます。複数のフィールドを利用してフィルタリングする時、field_and_orで AND | OR を指定できます。
<mt:entries field:basename="1" field:basename2="1" field_and_or="OR">
<mt:entrytitle>
</mt:entries>
ver. 2.4から利用できるようになった conditions属性では複数の条件を柔軟に組み合わせてフィルタリングすることができます。以下の例はタイトルに「Welcome!」を含み(部分一致)、本文に「Story」を含み、公開日が2021年1月1日以前の記事に絞り込みます。
<mt:sethashvars name="conditions">
title=like,Welcome!
text=like,Story
published_on=lt,2021-01-01 00:00:00
</mt:sethashvars>
<mt:entries conditions="$conditions">
<mt:entrytitle>
</mt:entries>
conditions属性には「カラム名=フィルタ条件,フィルタの値」という形式でハッシュ変数を生成して渡します。
フィルタ | 説明 |
---|---|
ct (like) | Contains (含む) |
nc | Not Contains (含まない) |
gt | Greater Than (より大きい) |
lt | Less Than (より小さい) |
ge | Greater than or Equal (以上) |
le | Less than or Equal (以下) |
eq | Equal (等しい) |
ne | Not Equal (等しくない) |
bw | Begin with (から始まる) |
ew | End with (で終わる) |
「mt:setcontext」ブロックタグを使うことで、日付によるフィルタリングを行うことができます。以下の例では2021年3月22日の記事のみを抽出します。尚、ver2.55で環境変数「weak_date_context」が追加されました。指定のある時、日付のフィルタリングは「published_on」カラムのみが対象となります。指定のないときは「published_on」カラムがあるときは published_on、ない場合は日付と時刻型の1つめのカラムでのフィルタリングとなります。
<mt:setcontext timestamp="20210322000000" timestamp_end="20210322235959">
<mt:entries>
<mt:entrytitle>
</mt:entries>
</mt:setcontext>
ver.2.55未満のバージョンではリレーションによる絞り込みについても「mt:setcontext」ブロックタグを使います。こちらについては AND | OR | NOT指定はできません。
<mt:setcontext context="category" container="entry" label="プレスリリース">
<mt:entries>
<mt:entrytitle>
</mt:entries>
</mt:setcontext>
# id指定の場合
<mt:setcontext context="category" container="entry" id="カテゴリのID">
<mt:entries>
<mt:entrytitle>
</mt:entries>
</mt:setcontext>
カテゴリのように階層設定のあるモデルの場合、path属性を使うことができます。
<mt:setcontext context="category" container="entry" path="プレスリリース/PowerCMS X">
<mt:entries>
<mt:entrytitle>
</mt:entries>
</mt:setcontext>
カテゴリー:テンプレート作成Tips | 技術情報
投稿者:Junnama Noda