「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
変数の機能を拡張するプラグイン
Movable Type 4以降では、テンプレート内で変数を使う機能が強化されました。
ただ、不便な点もいくつかあります。
その点を強化するプラグインを作りましたので、公開します。
2008年12月16日
式の中でrand関数が使えなかったので修正しました。
2013年5月15日
Movable Type 5.x対応にしました。
1.インストール
プラグインは以下からダウンロードすることができます。
ファイルを解凍すると、「plugins」というフォルダができます。
このフォルダを、Movable Typeのインストール先ディレクトリの中にアップロードします。
2.ライセンス
このプラグインは、MITライセンスで配布します。
商用版MT/MTOSともに、無償かつ無保証でご利用いただくことができます。
3.変数間の計算を行いやすくする
MTSetVar等のタグで、変数に値を代入することができます。
また、MTSetVarタグのopモディファイアを使うことで、簡単な計算を行うこともできます。
ただ、複雑な計算をしようとすると、MTSetVarタグを何度も使う必要がでて、テンプレートが冗長になります。
MTIfタグにはtestモディファイアがあり、式の計算結果で条件判断を行うことができます。
このプラグインでは、testモディファイアの処理を真似て、計算を行いやすくする「MTSetVarFormula」と「MTGetVarFormula」のタグを追加します。
MTSetVarFormulaタグは、計算式の結果を変数に代入する処理をします。
計算式の中では、変数は「$変数名」のように書きます。
書き方は以下のようになります。
<MTSetVarFormula name="代入先の変数名" formula="計算式">
MTGetVarFormulaタグは、計算式の結果をそのまま出力する処理をします。
書き方は以下のようになります。
<MTGetVarFormula formula="計算式">
例えば、変数yと変数zの和を2で割って、その結果を変数xに代入するには、以下のように書きます。
<MTSetVarFormula name="x" formula="($y+$z)/2">
上記の計算で、結果をそのまま出力するには、以下のように書きます。
<MTGetVarFormula formula="($y+$z)/2">
また、計算式の中で、Perlの組み込み関数を使うこともできます。
例えば、変数xの絶対値を求めて、変数xに代入しなおすには、以下のように書きます。
<MTSetVarFormula name="x" formula="abs($x)">
計算式の中で、配列やハッシュを使うこともできます。
配列の要素は、「$変数名->[インデックス]」と表します。
例えば、配列xの0番の要素は、「$p->[0]」と表すことができます。
また、ハッシュの要素は、「$変数名->{キー}」と表します。
例えば、ハッシュxの中で、キーが「abc」の要素は、「$x->{abc}」と表すことができます。
4.MTSetVarTemplateのモジュールにパラメータを渡す
MTSetVarTemplateタグを使うと、テンプレート内で繰り返し出てくる部分をモジュール化して、関数のように使うことができます。
ただ、MTGetVarタグでモジュールを呼び出す際に、パラメータを渡す機能はありません。
ところが、MTIncludeタグでテンプレートモジュールを組み込む際には、パラメータを渡す機能があります。
そこで、このプラグインでは、MTIncludeタグのように、MTSetVarTemplateタグのモジュールにパラメータを渡す機能を追加します。
その場合には「MTGetVarFunction」というタグを使います。
書き方は以下のようになります。
<MTGetVarFunction name="モジュール名" パラメータ名="値" パラメータ名="値" ・・・>
例えば、以下のようにMTSetVarTemplateタグでモジュールを定義するとします。
このモジュールは、変数textの文字列を、変数tagで示すタグによって囲む処理をするものです。
<MTSetVarTemplate name="wrap_tag"> <<MTGetVar name="tag">><MTGetVar name="text"></<MTGetVar name="tag">> </MTSetVarTemplate>
このモジュールを使って、「Movable Type」という文字列を、strongタグで囲みたいとします。
MTGetVarFunctionタグを使うと、以下のように書くことができます。
<MTGetVarFunction name="wrap_tag" tag="strong" text="Movable Type">
なお、MTGetVarFunctionタグ内でパラメータとして渡した変数は、MTSetVarTemplateのモジュールの中でのみアクセスすることができます。
MTGetVarFunctionタグの処理が終わると、パラメータとして渡した変数はクリアされます。