JavaScript、Ajax、HTML5(API)、Ruby…Web及び関連技術の実験&情報公開&制作物紹介。

何でもアリ。Compareプラグイン

| トラックバック(2)

MovableType(以下MT)の孫の手プラグインの紹介その2。
今回はCompareプラグインです。

MTでテンプレートを触っていて、
「こういう場合にだけ、こうしたい」
って思うこと、よくありませんか?
例えば、「カテゴリーがこの時にだけ、この画像を表示したい」とか、「エントリーの文字数が多いときだけ、折りたたみ式あるいはページ送り式にしたい」とか。

それらを個々で解決するプラグインは数々あります。
でもその「?の時に」という条件だけで良ければ、たった一つのプラグインで解決するかもしれません。
そのお手伝いをするのが、Compareプラグインです。

これは、かなり自由度の高い「変数比較の条件タグ」を提供するものです。

ダウンロード・インストール

Compare公開サイトの Download リンクをクリックして、"Compare.tar.gz"をダウンロードします。
(バージョン:1.1(2006/08/08現在))

Linuxや Mac OSX など、Unix系のOSをお使いなら、解凍方法は分かると思います。
(MacならダブルクリックするだけでOK。)
Windows使用の方で解凍方法が分からない方は、申し訳ありません、そこまで面倒見切れないので自分で調べてください。
(参考:google検索[Windows+tar.gz+解凍]

解凍すると、2つのファイルが生成されますが、必要なのは Compare.pl だけです。
これをMTのプラグインフォルダ([MT]/plugins/)にコピー(アップロード)すれば、インストールはOK。
念のため、MTのプラグイン管理画面を開いて Compare が表示されることを確認しましょう。

追加される機能

Compareプラグインは、9つの条件タグをMTに追加します。
まずは、以下の表を参照してください:

タグ名対応する
演算子
イメージ
MTIfEquala=b
MTIfNotEquala≠b
MTIfGreatera>b
MTIfGreaterOrEquala≧b
MTIfLessa<b
MTIfLessOrEquala≦b
MTIfBetween≦?≦lower≦a≦upper
MTIfBetweenExclusive<?<lower<a<upper
MTIfNotBetweenNOT(≦?≦)NOT(lower≦a≦upper)
(a<lower or upper<a)

こんな感じで、9種類の条件比較の機能を提供します。

使い方0:基本

まず、MTIfEqualを例にとって基本的な使い方の解説をします。
早速↓使用例:

<MTEntries>
    <MTIfEqual a="[MTEntryCategory]" b="Private">
        <img src="/images/private.png" alt="private" />
    </MTIfEqual>
    <$MTEntryTitle$><br />
</MTEntries>

これは、「エントリーのタイトルを全て表示する、ただし、カテゴリーが『private』だったら、エントリータイトルの前に private.png を表示する」というもの。
解説します。

  • <MTIfEqual>?</MTIfEqual>の内容は、タグの中のa属性とb属性が「a=b」の場合のみ実行(表示)されます。
  • <MTIfEqual>の、a属性に注目。[]の中に「MT?」と書いてあります。
    [MT?]と書くとその部分をMTタグと解釈してくれるのです。この場合は<$MTEntryCategory$>と解釈され、その時点のエントリーのメインカテゴリー名に置き換えられるわけです。
    これはb属性にも適用できます。

この例はMTIfEqualですが、他のタグでも基本的な概念は同じです。

使い方1:IfEqualとIfNotEqual

詳しい使い方。3つに分けます。
まずは、「等しい」または「等しくない」を判定する2つのタグの解説。

MTIfEqual
aがb(もしくはb1,b2,... のいずれか)と等しいかどうかを判定する条件タグ
MTIfNotEqual
aがb(およびb1,b2,... の全て)と等しくないかどうかを判定する条件タグ

要するに、MTIfEqualとMTIfNotEqualは全く正反対の条件判断をするタグです。
続いて、これら2つのタグに共通の属性。

a
[必須]比較対象の指定
b, b1, b2...
比較する値。最低1つ必須。いくつでも指定可能。
numeric
数値として比較する場合は"1"を指定する(デフォルトは文字列比較)
case_sensitive
文字列比較の場合に、半角アルファベットの大文字・小文字を区別する場合に"1"を指定する(デフォルトは大文字・小文字を区別しない。numericが指定されていれば無効)

b属性の方は、「bの後に数字が0個以上続くもの」という定義なので、「b00」とか「b111111111111」とかでもOK。
また、numericとcase_sensitiveは他の条件タグでも共通です。

使い方2:IfGreater,IfGreaterOrEqual,IfLess,IfLessOrEqual

次に、「大きい」「小さい」を判定する4つのタグの解説。

MTIfGreater
a>bかどうかを判定する条件タグ
MTIfGreaterOrEqual
a≧bかどうかを判定する条件タグ
MTIfLess
a<bかどうかを判定する条件タグ
MTIfLessOrEqual
a≦bかどうかを判定する条件タグ

つまり、MTIfEqualやMTIfNotEqualと違い、比較するのはaとbの2つの値だけです。
一応、属性の解説。

a
[必須]比較対象の指定
b
[必須]比較する値
numeric
数値として比較する場合は"1"を指定
case_sensitive
大文字・小文字を区別する場合に"1"を指定

使い方3:IfBetween,IfBetweenExclusive,IfNotBetween

最後に、「範囲内」「範囲外」を判定する3つのタグの解説。

MTIfBetween
aがlower以上upper以下かどうかを判定する条件タグ
MTIfBetweenExclusive
aがlowerより大きくupper未満かどうかを判定する条件タグ
MTIfNotBetween
aがlower未満か、もしくはupperより大きいかどうかを判定する条件タグ

つまり「lower?upper」の「範囲内」か「範囲外」か、ということですね。
属性の解説。

a
[必須]比較対象の指定
lower
[必須]比較する値(下限)
upper
[必須]比較する値(上限)
numeric
数値として比較する場合は"1"を指定
case_sensitive
大文字・小文字を区別する場合に"1"を指定

ここで「<MTIfNotBetweenExclusive>はないの?」と思われた方も多いはず。
たぶん、名前が長いから敬遠されると思ってわざと定義しなかったんだと思われます。
それに、↓以下のようにすればその機能を実現できます。

<MTIfBetweenExclusive a="?" lower="?" upper="?"><MTElse>
    ?<!-- この内容は a≦lower もしくは uper≦a の場合のみ表示されます。 -->
</MTElse></MTIfBetweenExclusive>

トラックバック(2)

あんちもん2.Lab - ダイナミック・パブリッシング対応Compareプラグイン (2006年8月17日 17:44)

Compareプラグインの、ダイナミック・パブリッシング対応PHP版を、作っちゃいました。 続きを読む

あんちもん2.Lab - 数え上げや連番生成ができる! - AutoIncrementalVar (2006年8月22日 09:56)

MTSetVar/MTGetVar互換、数え上げ変数作成プラグインの紹介。 続きを読む

カテゴリ

月別 アーカイブ

OpenID対応しています OpenIDについて

このブログ記事について

このページは、あんちもん2が2006年8月 9日 00:01に書いたブログ記事です。

ひとつ前のブログ記事は「MTCollateのススメ」です。

次のブログ記事は「ダイナミック・パブリッシング対応Compareプラグイン」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。