mtde.info

Movable Type Developers Express

このカテゴリでは、Movable Type 4 で変数を扱う場合に必要となる「MTSetVar」などのSetVar系のテンプレートタグの説明を行います。

『SetVar系』カテゴリ内のエントリ一覧

MTSetVar

2008年1月30日 21:46 | Writer: apstar | 記事本文

MTSetVarテンプレートタグは、変数を定義して値を設定、いわゆる「代入」を行うテンプレートタグです。ファンクションタグです。

基本的な書式

書式は以下のとおりです。

<MTSetVar name="tmpData" value="200">

nameモデファイアには変数名を記述します。nameモデファイアは必須です。変数名ですが、安易に短い名前ではなく、多少は意味のある語句とするほうがわかりやすいです。

valueモデファイアにはその変数に代入したいデータ(数値、文字列)を記述します。値を value="" やvalue="0" として初期化することも可能です。

つまり、上記サンプルコードは、tmpDataという変数を定義し、その値が200である、という意味です。

Movable Typeには数値型や文字列型という概念は無いです。下記のように文字列の代入も可能です。

<MTSetVar name="MyHouse" value="平屋の一軒家">

この場合、以後MyHouseという変数は、データとしては"平屋の一軒家"として扱われます。

MTSetVarの続きを読む

MTSetVarBlock

2008年1月30日 22:26 | Writer: apstar | 記事本文

MTSetVarテンプレートタグを用いた変数の生成にて、valueモデファイアへテンプレートタグを直接指定したいケースは多いです。しかし、それはできません。以下コードは、正しく動作しないです。

<MTSetVar name="ThisEntry" value="<MTEntryTitle>">

変数へテンプレートタグの出力結果を代入したい場合には、MTSetVarBlockテンプレートタグを用います。ブロックタグです。MTSetVarと異なり、閉じるタグが必要です。

基本的な書式

書式は以下のとおりです。

<MTSetVarBlock name="ThisEntry"><MTEntryTitle></MTSetVarBlock>

nameモデファイアにはMTSetVarと同じく変数名を記述します。nameモデファイアは必須です。変数名であるが、安易に短い名前ではなく、多少は意味のある語句とするほうがわかりやすいです。

valueモデファイアは存在しません。これは、<MTSetVarBlock></MTSetVarBlock>タグで囲まれた部分の実行結果がvalueとしてセットされるからです。

つまり、上記サンプルコードは、ThisEntryという変数を定義し、その値が<MTEntryTitle>の実行結果(そのエントリのエントリ名)となるという意味です。

MTSetVarBlockの続きを読む

MTSetVars

2008年1月30日 23:17 | Writer: apstar | 記事本文

MTSetVarsテンプレートタグは、MTSetVarタグを一度に並べて指定するようなイメージのテンプレートタグです。

valueへテンプレートタグを直接指定できるので、かなり便利です。

基本的な書式

書式は以下のとおりです。

<MTSetVars>
   MyHome=http://example.com/
   MyImage=myface.jpg
   MyAge=20
   Myblog=<MTBlogURL>
</MTSetVars>

MTSetVarで言うところのnameをイコールの左辺に、valueをイコールの右辺に記述します。valueの値を括るダブルクォーテーションは必要ないです。また、valueへテンプレートタグを直接指定できるので、かなり便利です。

MTSetVarTemplate

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

MTSetVarTemplateテンプレートタグは、実際の実行結果はMTSetVarBlockに準じたものになりますが、動作の違いは「ブロックした内容が処理された結果が値となる(MTSetVarBlock)」か、「ブロックした内容が処理されずそのまま値となる(MTSetVarTemplate)」かです。

MTSetVarTemplateタグで括られたブロックが代入された変数は、MTGetVarで出力されるときにブロックの内容が実行されます。

MTSetVarTemplate タグは、Movable Typeドキュメントによれば MT 管理画面での使用が目的らしいです。

http://www.movabletype.jp/documentation/appendices/tags/setvartemplate.html

MTSetVarBlock ブロックタグとの違いは、ブロックした内容が処理された結果が値となるか、処理されずブロックしたテンプレートが値となるかです。 MTSetVarTemplate はブロックした内容が処理されずテンプレートが値となり、MTGetVar ファンクションタグで呼び出されたテンプレートで処理を行います。このテンプレートタグは主に管理画面で利用されます。

MTSetVarTemplateの続きを読む

MTSetVarにおけるfunctionモデファイア(push関数)

2008年2月 1日 20:39 | Writer: apstar | 記事本文

MTSetVarテンプレートタグにおけるfunctionモデファイアの中で、pushという関数がありますが、これは「配列変数の一番上(または一番最後)に新しい値を追加する」という機能を持ちます。

例えば、testVar[ ]という配列があり、要素が0から10までとします。MTSetVarで同じ変数名(testVar)を指定しつつfunctionモデファイアでpushという関数を指定すると、valueモデファイアで指定した値をセットしつつ配列の一番最後へデータを追加できます。

MTSetVarにおけるfunctionモデファイア(push関数)の続きを読む

MTSetVarにおけるfunctionモデファイア(unshift関数)

2008年2月 1日 20:43 | Writer: apstar | 記事本文

MTSetVarテンプレートタグにおけるfunctionモデファイアの中で、unshiftという関数がありますが、これは「配列変数の一番下(または一番最初)に新しい値を追加する」という機能を持ちます。

例えば、testVar[ ]という配列があり、要素が0から10までとします。MTSetVarで同じ変数名を指定しつつ functionモデファイアでunshiftという関数を指定すると、valueモデファイアで指定した値をセットしつつ配列の一番最初へデータを追加できます。

unshiftでのデータ挿入においては、pushとは異なり、unshiftで挿入したデータ以後は今までのデータと配列要素は1つずつずれるというのが注意するべき点です。

MTSetVarにおけるfunctionモデファイア(unshift関数)の続きを読む

MTSetVarにおけるfunctionモデファイア(undef関数)

2008年2月 1日 20:48 | Writer: apstar | 記事本文

MTSetVarテンプレートタグにおけるfunctionモデファイアの中で、undefという関数がありますが、これは「配列またはハッシュ変数をクリアする」という機能を持ちます。クリアは値(データ)のみのクリアであり、配列自体は削除されるわけではないです。

例えば、testVar[ ]という配列があり、要素0から10まで内部にデータを持っているとします。MTSetVarで同じ変数名を指定しつつ indexモデファイアでクリアしたい要素、functionモデファイアでundefという関数を指定すると、指定要素のデータのみクリアできます。

MTSetVarにおけるfunctionモデファイア(undef関数)の続きを読む

MTSetVarにおけるfunctionモデファイア(delete関数)

2008年2月 1日 20:50 | Writer: apstar | 記事本文

MTSetVarテンプレートタグにおけるfunctionモデファイアの中で、deleteという関数がありますが、これは「ハッシュ変数をクリアする」という機能を持ちます。キー、値ともにクリアされます。

例えば、MyHomeというハッシュがあり、数個のデータがあるとします。MTSetVarで同じ変数名を指定しつつ keyモデファイアでクリアしたいキー、functionモデファイアでdeleteという関数を指定すると、指定キーのキーと値をセットでクリアできます。

MTSetVarにおけるfunctionモデファイア(delete関数)の続きを読む

エントリ
タグ
はじめに
導入編
ローカル環境
変数
サンプル
その他
トラブル集
2008 mtde.info