Home > スポンサー広告 > 変数の計算が簡単にできるプラグインVarExpandを使ってMTの配列をシャッフルしてみました。 Movable Type > Movable Type Plugins > 変数の計算が簡単にできるプラグインVarExpandを使ってMTの配列をシャッフルしてみました。

[ スポンサー広告 ] はてなブックマーク - スポンサーサイト
スポンサーサイト

  • -------- :
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ Movable Type Plugins ] はてなブックマーク - 変数の計算が簡単にできるプラグインVarExpandを使ってMTの配列をシャッフルしてみました。
変数の計算が簡単にできるプラグインVarExpandを使ってMTの配列をシャッフルしてみました。

VarExpand はタグ内で変数の計算ができるようになるプラグインです。基本の計算式の他、Perlの組み込み関数が使用できます。変数間の計算がしやすくなるので、テンプレートの見た目もすっきりします。
The blog of H.Fujimoto 変数の機能を拡張するプラグイン
http://www.h-fj.com/blog/archives/2008/04/22-135131.php

上記サイトからプラグイン(VarExpand_1_01.zip)をダウンロードします。

解凍したら中のファイルのうち、

 VarExpand というフォルダを
  (MTのアプリケーションディレクトリ)/plugins にアップロードすれば使えます。


使い方

・変数yに2を足した値をその場で表示したいとき
<MTGetVarFormula formula="$y+2">


・変数yに2を足した値を変数zに代入したいとき
<mt:SetVarBlock name="z"><MTGetVarFormula formula="$y+2"></mt:SetVarBlock>


・0~9の整数の乱数をその場で表示したいとき
<mt:GetVarFormula formula="int(rand(10))">


・変数zに0~9の整数の乱数を代入したいとき
<mt:SetVarBlock name="z"><mt:GetVarFormula formula="int(rand(10))"></mt:SetVarBlock>


変数に値を代入したい時には、
<MTSetVarFormula name="x" formula="rand(10)">
というような書き方もあるのですが、私の環境ではエラーになってしまいました。
MT5だからなのかな?作者のページで、対応するMTのバージョンは4.1と4.2と記載されています。

とはいえ、MTタグの見た目で乱数が取得できたり、MTSetVarタグを何度も使って計算をしなくてもよくなったりと、とても便利なプラグインだと思いました。


以下、配列をシャッフルするコードです。

<div style="text-align:center;">
<mt:ignore><!-- 配列を作成 --></mt:ignore>
<mt:for var="i" from="0" to="4">
  <mt:SetVarBlock name="elist[$i]">
    <span style="display:block;">test_<MTGetVarFormula formula="$i+1"></span>
  </mt:SetVarBlock>
</mt:for>

<hr>
<mt:ignore><!-- シャッフル前の配列を表示 --></mt:ignore>
<mt:SetVarBlock name="listlength"><mt:GetVar name="count(elist)"></mt:SetVarBlock>
<mt:SetVar name="listlength" value="1" op="-">
<mt:for var="x" from="0" to="$listlength">
  <mt:GetVar name="elist[$x]">
</mt:for>
<hr>

<mt:ignore><!-- 配列をシャッフル --></mt:ignore>
  <mt:SetVarBlock name="arynum"><mt:GetVar name="count(elist)"></mt:SetVarBlock>
  <mt:SetVarBlock name="forlength"><mt:GetVar name="count(elist)"></mt:SetVarBlock>
  <mt:SetVar name="forlength" op="--">
  <mt:for var="i" from="1" to="$forlength">
    <mt:SetVarBlock name="randnum"><mt:GetVarFormula formula="int(rand($arynum))"></mt:SetVarBlock>
    <mt:SetVar name="arynum" op="--">
    <mt:SetVarBlock name="enttitle"><mt:GetVar name="elist[$arynum]"></mt:SetVarBlock>
    <mt:SetVarBlock name="elist[$arynum]"><mt:GetVar name="elist[$randnum]"></mt:SetVarBlock>
    <mt:SetVar name="elist[$randnum]" value="$enttitle">
  </mt:for>

<mt:ignore><!-- シャッフル後の配列を表示 --></mt:ignore>
<mt:for var="x" from="0" to="$listlength">
  <mt:GetVar name="elist[$x]">
</mt:for>
<hr>
</div>



結果:
配列のシャッフル結果


テンプレート内にPHPやPerl等のプログラムを直接書きたくないという時などに。
<mt:Entries>内で<mt:SetVarBlock>を使用して、配列 elist に<$mt:Include module="ブログ記事の概要"$>などを入れればブログ記事もランダムに表示できるようになります。


環境:
Movable Type Pro 5.02

プラグイン:
VarExpand 1.01

こちらの記事も合わせてご覧ください



コメントの投稿

非公開コメント

サイト内検索

カテゴリ
最新記事
RSS
最新トラックバック
最新コメント
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。