テンプレートエンジン IFブロック

この記事は公開日より10年以上経過しているため、現在の内容と異なる可能性があります。

テンプレートエンジン改良

次期バージョン(執筆時1.7.0最新)でテンプレートエンジンの改良を考えています。 実はもう動いているものがあったりするのですが。 そこで今回は現在出来ているものを紹介したいと思います。

IFブロック

今回のテンプレートエンジンの改良点はIF(条件分)を使用できるようにした事です。 if文がなくても十分にサイトを作製する事は出来るのですが、どうしても細かい所で if文が必要な場合があります。そこで今回実装してみました。

記述方法

<!-- BEGIN_IF [%{PAGE}/gte/5] -->
5ページ以上です
<!-- ELSE -->
4ページ以下です。
<!-- END_IF -->

このような感じで書く事ができます。 条件式の指定には[]の中にa-blog cmsのURLコンテキストのような感じで 値/オプション/値 と指定します。またネスト(入れ子)する事も可能です。

オプション

オプションに指定できる値は以下になります。カスタムフィールドの検索オプションと 同様です。

演算子 条件 意味
eq = 等しい
neq != 等しくない
gt > より大きい
gte >= 以上
lt < より小さい
lte <= 以下
lk LIKE 含まれる
nlk NOT LIKE 含まれない
re REGEXP 指定した正規表現に合致する
nre NOT REGEXP 指定した正規表現に合致しない
em EMPTY 値が空(何も入っていない)
nem NOT EMPTY 値が空(何も入っていない)ではない

実行順

テンプレートエンジンの実行順序は以下のようになります。

  • インクルードを解決
  • インクルード処理と同時にグローバル変数を解決
  • タッチモジュールを解決(デフォルトON)
  • モジュール類を内側から解決(同じ階層の場合は下から)
  • IFブロックを解決

IFブロックの解決は一番最後に解決される為、条件式で グローバル変数モジュールの変数も使用することが出来ます。 またモジュールのループ内でも動作します

これにより、今まで手がいれれなかった細かい制御が可能になるかと思います。 お楽しみに!

同じタグ付けがされている記事