Movable Typeのテンプレート内で取得した数値に対して、加算や減算などを行う方法を調べたのでメモ。
サンプルコード
演算はopモディファイアを使って行いますが、使用できるテンプレートタグはMTSetVarやMTVar、MTIf、MTUnlessなどになります。
実際に設定を試してみます。
<mt:SetVars>totalEntry=<mt:Entries lastn="1"><mt:BlogEntryCount></mt:Entries></mt:SetVars> 初期値:<mt:Var name="totalEntry"> <mt:SetVars>add=<mt:Var name="totalEntry" value="5" op="add"></mt:SetVars> 加算:<mt:Var name="add"> <mt:SetVars>sub=<mt:Var name="totalEntry" value="5" op="sub"></mt:SetVars> 減算:<mt:Var name="sub"> <mt:SetVars>mul=<mt:Var name="totalEntry" value="5" op="mul"></mt:SetVars> 乗算:<mt:Var name="mul"> <mt:SetVars>div=<mt:Var name="totalEntry" value="5" op="div"></mt:SetVars> 除算:<mt:Var name="div"> <mt:SetVars>mod=<mt:Var name="totalEntry" value="5" op="mod"></mt:SetVars> 剰余:<mt:Var name="mod"> <mt:SetVars>inc=<mt:Var name="totalEntry" op="inc"></mt:SetVars> インクリメント:<mt:Var name="inc"> <mt:SetVars>dec=<mt:Var name="totalEntry" op="dec"></mt:SetVars> デクリメント:<mt:Var name="dec">
opに演算の内容、valueに演算で使用する数値を指定しますが、インクリメントやデクリメントの場合はvalueは無視されます。
上記の場合、再構築を行うと以下のように出力されました。
初期値:30 加算:35 減算:25 乗算:150 除算:6 剰余:0 インクリメント:31 デクリメント:29
opモディファイアでは記号を使って指定することもできます。
<mt:SetVars>totalEntry=<mt:Entries lastn="1"><mt:BlogEntryCount></mt:Entries></mt:SetVars> 初期値:<mt:Var name="totalEntry"> <mt:SetVars>add=<mt:Var name="totalEntry" value="10" op="+"></mt:SetVars> 加算:<mt:Var name="add"> <mt:SetVars>sub=<mt:Var name="totalEntry" value="10" op="-"></mt:SetVars> 減算:<mt:Var name="sub"> <mt:SetVars>mul=<mt:Var name="totalEntry" value="10" op="*"></mt:SetVars> 乗算:<mt:Var name="mul"> <mt:SetVars>div=<mt:Var name="totalEntry" value="10" op="/"></mt:SetVars> 除算:<mt:Var name="div"> <mt:SetVars>mod=<mt:Var name="totalEntry" value="10" op="%"></mt:SetVars> 剰余:<mt:Var name="mod"> <mt:SetVars>inc=<mt:Var name="totalEntry" op="++"></mt:SetVars> インクリメント:<mt:Var name="inc"> <mt:SetVars>dec=<mt:Var name="totalEntry" op="--"></mt:SetVars> デクリメント:<mt:Var name="dec">
結果は以下の通りです。
初期値:30 加算:40 減算:20 乗算:300 除算:3 剰余:0 インクリメント:31 デクリメント:29
変数ではなくif文でも使用することができます。
基本的な使い方は同じです。
<mt:SetVars>totalEntry=<mt:Entries lastn="1"><mt:BlogEntryCount></mt:Entries></mt:SetVars> 初期値:<mt:Var name="totalEntry"> <mt:If name="totalEntry" value="10" op="+" eq="40"> 加算:一致 <mt:Else> 加算:不一致 </mt:If> <mt:If name="totalEntry" value="5" op="*" gt="100"> 乗算:100より大きい <mt:Else> 乗算:100以下 </mt:If> <mt:Unless name="totalEntry" value="5" op="/" gt="5"> 剰余:5より小さい <mt:Else> 剰余:5以上 </mt:Unless>
以下ように出力されました。
初期値:30 加算:一致 乗算:100より大きい 剰余:5以上
コメントが承認されるまで時間がかかります。