mtde.info

Movable Type Developers Express

このカテゴリでは、Movable Type 4 で変数を扱う場合に必要となる各種テンプレートタグに用いられる、さまざまなモデファイアの種類や使い方などについての説明を行います。

『共通モデファイア系』カテゴリ内のエントリ一覧

opモデファイア

2008年2月 2日 22:12 | Writer: apstar | 記事本文

MTSetVarやMTIfテンプレートタグでopモデファイアを使用すると、簡単な数値演算が可能となります。

対象テンプレートタグは

で、使用できる計算関数は

です。

基本書式

以下はMTSetVarを用いた足し算の例です。

1行目でvar1へ100を与える。

2行目でvar2へ55を与える。

3行目でvar1の100に55を加えて出力する。

<MTSetVar name="var1" value="100">
<MTSetVar name="var2" value="55">
<MTGetVar name="var1" value="$var2" op="+">

opモデファイアとvalueモデファイア

2008年2月 2日 22:24 | Writer: apstar | 記事本文

MTSetVarやMTGetVarで使用できるopモデファイアを指定すると、一緒に指定するvalueモデファイアの意味合いが通常とは違ってきます。

opモデファイアが指定されていると、nameで指定されている変数の「もとの値」と、valueで指定されている値を用いて計算を行います。

簡単な例

<MTSetVar name="var1" value="100">
<MTGetVar name="var1" value="20" op="+">

1行目では、単純にvar1という名前の変数へ、100という値を代入しています。

2行目では、name="var1"というコードがあります。もし、opモデファイアがない通常の書き方では、これは変数の値を上書きするようなコードとなります。この例の場合は、opモデファイアに"+"オプション指定があるので、もとの値100にvalueで指定した20が加算され、120という結果が出力されます。

opモデファイア(足し算)

2008年2月 2日 22:44 | Writer: apstar | 記事本文

opモデファイアを用いて、足し算を行ってみます。

書式は、op="+"あるいはop="add"と書きます。

サンプルコード

<MTSetVar name="var1" value="100">
<MTSetVar name="var2" value="55">
<MTGetVar name="var1" value="$var2" op="+">

上記コードの出力結果:155

1行目:var1という変数へ100という値を代入する。

2行目:var2という変数へ55という値を代入する。

3行目:op="+"が指定されているので、var1という変数へ、もともとvar1へ格納されていた100という値にvar2に格納された55という値を足し合わせた値をセット、MTGetVarなので出力する。

opモデファイア(引き算)

2008年2月 2日 22:54 | Writer: apstar | 記事本文

opモデファイアを用いて、引き算を行ってみます。

書式は、op="-"あるいはop="sub"と書きます。

サンプルコード

<MTSetVar name="var1" value="100">
<MTSetVar name="var2" value="55">
<MTGetVar name="var1" value="$var2" op="-">

上記コードの出力結果:45

1行目:var1という変数へ100という値を代入する。

2行目:var2という変数へ55という値を代入する。

3行目:op="-"が指定されているので、var1という変数へ、もともとvar1へ格納されていた100という値からvar2に格納された55という値を引いた値をセット、MTGetVarなので出力する。

opモデファイア(掛け算)

2008年2月 2日 22:56 | Writer: apstar | 記事本文

opモデファイアを用いて、掛け算を行ってみます。

書式は、op="*"あるいはop="mul"と書きます。

サンプルコード

<MTSetVar name="var1" value="100">
<MTSetVar name="var2" value="55">
<MTGetVar name="var1" value="$var2" op="*">

上記コードの出力結果:5500

1行目:var1という変数へ100という値を代入する。

2行目:var2という変数へ55という値を代入する。

3行目:op="*"が指定されているので、var1という変数へ、もともとvar1へ格納されていた100という値にvar2に格納された55という値を掛け合わせた値をセット、MTGetVarなので出力する。

opモデファイア(割り算)

2008年2月 2日 23:00 | Writer: apstar | 記事本文

opモデファイアを用いて、割り算を行ってみます。

書式は、op="/"あるいはop="div"と書きます。

サンプルコード

<MTSetVar name="var1" value="100">
<MTSetVar name="var2" value="55">
<MTGetVar name="var1" value="$var2" op="/">

上記コードの出力結果:1.81818181818182

1行目:var1という変数へ100という値を代入する。

2行目:var2という変数へ55という値を代入する。

3行目:op="*"が指定されているので、var1という変数へ、もともとvar1へ格納されていた100という値をvar2に格納された55という値で割った値をセット、MTGetVarなので出力する。

opモデファイア(余剰)

2008年2月 2日 23:03 | Writer: apstar | 記事本文

opモデファイアを用いて、余剰を求めてみます。余剰とは、わかりやすく言うと、値Aを値Bで割ったときの余りを求めることです。

書式は、op="%"あるいはop="mod"と書きます。

サンプルコード

<MTSetVar name="var1" value="100">
<MTSetVar name="var2" value="12">
<MTGetVar name="var1" value="$var2" op="%">

上記コードの出力結果:4

1行目:var1という変数へ100という値を代入する。

2行目:var2という変数へ12という値を代入する。

3行目:op="%"が指定されているので、var1という変数へ、もともとvar1へ格納されていた100という値をvar2に格納された12という値で割った場合の割り切れなかった余り値をセット(100は12で割ると8あまり4)、MTGetVarなので4という結果を出力する。

opモデファイア(インクリメント)

2008年2月 2日 23:08 | Writer: apstar | 記事本文

opモデファイアを用いて、インクリメントを使用してみます。インクリメントとは、変数の値を1増やす処理です。ループ中で用いることが多いです。

書式は、op="++"あるいはop="inc"と書きます。また、valueモデファイアは必要なく、指定しても無視されます。

サンプルコード

<MTSetVar name="var1" value="0">
<MTFor var="x" from="10" to="20">
   <MTSetVar name="var1" op="++">
</MTFor>
val1の結果:<MTGetVar name="var1">

上記コードの出力結果:11

1行目:var1という変数へ0という値を代入し初期化する。

2行目:xというカウンタ変数で10から20までのループを開始する。

3行目:op="++"が指定されているので、var1という変数の値へ、ループ毎に+1足していく。

4行目:ループ閉じるタグ。

5行目:10から20までは、11回のループである。結果の11を出力する。

opモデファイア(デクリメント)

2008年2月 2日 23:19 | Writer: apstar | 記事本文

opモデファイアを用いて、デクリメントを使用してみます。デクリメントとは、(インクリメントとは逆で)変数の値を1減らす処理です。ループ中で用いることが多いです。

書式は、op="--"あるいはop="dec"と書きます。また、valueモデファイアは必要なく、指定しても無視されます。

サンプルコード

<MTSetVar name="var1" value="100">
<MTFor var="x" from="10" to="20">
   <MTSetVar name="var1" op="--">
</MTFor>
val1の結果:<MTGetVar name="var1">

上記コードの出力結果:89

1行目:var1という変数へ100という値を代入し初期化する。

2行目:xというカウンタ変数で10から20までのループを開始する。

3行目:op="++"が指定されているので、var1という変数の値へ、ループ毎に-1引いていく。

4行目:ループ閉じるタグ。

5行目:10から20までは、11回のループである。結果の89を出力する。

indexモデファイア(配列)

2008年2月 2日 23:23 | Writer: apstar | 記事本文

indexモデファイアとは、配列の要素を指定するためのモデファイアです。keyモデファイアとindexモデファイアは、どちらか片方しか付与することができません。indexモデファイアを付与した場合はその変数は配列となり、keyモデファイアを付与した場合はハッシュとなります。

indexモデファイアは省略して書くことが可能で、その場合は下記例「indexモデファイアを省略して配列を生成した例」に示すように記述します。

なお、下記2種類のコードは、実行するとまったく同じ結果となります。

indexモデファイアを指定して配列を生成した例

<!-- indexを用いる -->
<MTFor var="x" from="0" to="10">
   <MTSetVar name="var1" index="$x" value="$x">
</MTFor>
<!-- 結果出力 -->
<MTFor var="x" from="0" to="10">
   <MTGetvar name="x">:<MTGetVar name="var1" index="$x"><br />
</MTFor>

indexモデファイアを省略して配列を生成した例

<!-- indexを省略 -->
<MTFor var="x" from="0" to="10">
   <MTSetVar name="var1[$x]" value="$x">
</MTFor>
<!-- 結果出力 -->
<MTFor var="x" from="0" to="10">
   <MTGetvar name="x">:<MTGetVar name="var1[$x]"><br />
</MTFor>

keyモデファイア(ハッシュ)

2008年2月 2日 23:32 | Writer: apstar | 記事本文

keyモデファイアとは、ハッシュのキー値を指定するためのモデファイアです。keyモデファイアとindexモデファイアは、どちらか片方しか付与することができません。indexモデファイアを付与した場合はその変数は配列となり、keyモデファイアを付与した場合はハッシュとなります。

keyモデファイアは省略して書くことが可能で、その場合は下記例「keyモデファイアを省略してハッシュを生成した例」に示すように記述します。

なお、下記2種類のコードは、実行するとまったく同じ結果となります。

keyモデファイアを指定してハッシュを生成した例

<!-- keyを用いる -->
<MTFor var="x" from="0" to="10">
   <MTSetVar name="var1" key="$x" value="$x">
</MTFor>
<!-- 結果出力 -->
<MTLoop name="var1">
   <MTGetVar name="__key__">:<MTGetVar name="__value__"><br />
</MTLoop>

keyモデファイアを省略してハッシュを生成した例

<!-- keyを省略 -->
<MTFor var="x" from="0" to="10">
   <MTSetVar name="var1{$x}" value="$x">
</MTFor>
<!-- 結果出力 -->
<MTLoop name="var1">
   <MTGetVar name="__key__">:<MTGetVar name="__value__"><br />
</MTLoop>
エントリ
タグ
はじめに
導入編
ローカル環境
変数
サンプル
その他
トラブル集
2008 mtde.info