Home > Logs > June 2008 > This Entry
ファンクションタグの内容を区切って配列に格納する SetArray プラグイン
Movable Type のテンプレートタグで配列を利用する機会はあまりないかもしれませんが、例えばカスタムフィールドを使って追加したテキスト入力欄の内容をカンマで区切って配列として格納しておき、MTFor タグでループしてひとつずつ取り出せば、プルダウンメニューが作れたりします。個人的には配列を使うことってほとんどないのでノーマークだったのですが、このくらいできるのかな?と思って調べてみたら、どうもそうはなっていないようなので作りました。自分自身で使う機会があるかどうかわかりませんが、たとえば EC サイトで、商品の色などを選択できるプルダウンメニューを作る、といった目的には役立つかもしれません。
動作
MTSetArray ファンクションタグを使用できるようになります。MTSetArray ファンクションファグでは、MTIfNonEmpty や MTIfNonZero ファンクションタグのように、tag モディファイアで値を取得したいタグの名前を指定します。そして tag モディファイアで指定された値を sep モディファイアで指定した文字で値を区切って配列を作成、name モディファイアで指定した名前の配列に格納する、という動作をします。格納された配列からは、MTFor などのブロックタグを使うことで、ひとつずつ値を取り出すことができます。
テンプレートタグの記述例
たとえば、あるブログにブログ記事が二つ投稿されていて、<$MTEntryData$> というファンクションタグで値を取り出せるカスタムフィールドに、それぞれ英語表記の曜日と日本語表記の曜日がカンマ区切りで入力されているとします。すると、以下のようなテンプレートタグを書くことで、曜日をプルダウンとして出力することができます。
<mt:entries>
<h1><$mt:entrytitle$></h1>
<$mt:setvar name="week" value=""$>
<$mt:setarray tag="EntryData" name="week" sep=","$>
<mt:for var="x" from="0" to="6">
<mt:if name="__first__">
<select>
</mt:if>
<option value="<$mt:getvar name="week[$x]"$>"><$mt:getvar name="week[$x]"$></option>
<mt:if name="__last__">
</select>
</mt:if>
</mt:for>
</mt:entries>
出力結果
上記のようなテンプレートタグの場合、以下のように出力されます。
SetArray プラグインを使った出力例
動作環境
MovableType ver. 4.0 以降。ver. 4.2 でも動作確認してあります。ver 4.2 いいよーみんなー
ダウンロード
インストール
通常のプラグインと同様に、解凍してできた SetArray フォルダを plugins ディレクトリ内にそのままアップロードしてください。正しくアップロードできていれば、システム・メニューのプラグイン設定に SetArray プラグインが表示されます。
使用できるタグとモディファイア
MTSetArray
値を区切り、配列に格納するファンクションタグです。モディファイア指定できるもののうち、基本的なものは以下の三つです。
- tag
- 値を取得したいファンクションタグを指定します。 例) tag="EntryData"
- sep
- 区切り文字を指定します。tag モディファイアの指定によって取得された値は、sep モディファイアで指定された文字によって分割されます。例) sep=","
- name
- 値を格納したい配列の名前を指定します。 例) name="week"
また、SetVar ファンクションタグなどと同じように、function モディファイアが使用できます。既存の変数が存在する場合のためのモディファイアです。
- function="push"
- 配列変数の一番上(または一番最後)に新しい値を追加します。
- function="unshift"
- 配列変数の一番下(または一番最初)に新しい値を追加します。
- function="undef"
- 変数をクリアします。
補足
CSSNite で CHEEBOW さんが 「(プログラミングはモテないけど)プラグインはモテるかもしれないね」っておっしゃってたので作ってみました。でも作ってる途中でやっぱりモテない気がしてきました というか作るものによるなって思いました
修正依頼とかダメ出しとか人生相談とか
フィードバックいただけるとうれしいです。ぜひ weeeblog@gmail.com までお送りください。コメントやトラックバックでもかまいません。人生相談は20代の女性に限りますが、それ以外は応相談(※フィードバックは女性でなくともかまいません)。
Post Comment