TopMovable Type > バージョン別 > 4.1 > 2007年12月
2007年12月27日

MTLoop タグによる配列変数・ハッシュ変数の制御

December 27,2007 1:35 AM
Tag:[, ]
Permalink

Movable Type 4.0 では管理画面用だった MTLoop タグが、Movable Type 4.1 ではテンプレート上で利用できるようになりました。これにより配列やハッシュの取得が MTLoop タグで実現できるようになります。

以下、MTLoop での配列とハッシュの利用方法を紹介します。

1.配列を取得する

MTFor タグで設定し、MTLoop タグで取得するサンプルを示します。

<mt:for var="i" from="0" to="9">
    <mt:setvar name="foo[$i]" value="$i">
</mt:for>
 
<mt:loop name="foo">
    <mt:getvar name="__value__">
</mt:loop>

MTLoop タグの使い方は、name モディファイアに配列変数名を設定するだけで、ここでは foo を設定しています。

配列変数 foo の値は予約変数 __value__ に自動的に設定されるので、あとは MTGetVar タグの name モディファイアに指定するだけです。

MTLoop タグの部分を MTFor タグで書くと

<mt:for var="i" from="0" to="9">
    <mt:setvar name="foo[$i]" value="$i">
</mt:for>

となるので、MTLoop タグの方が簡単に書けることがお分かりになると思います。

なお、MTLoopタグでは配列のインデックスが0から処理が開始されるため、設定側の MTFor タグの from モディファイアは「0」、to モディファイアは「9」を設定しています。

2.ハッシュを取得する

4.1 ベータ 2 から新しく追加された sethashvar タグ(ハッシュをまとめて定義できるタグ)を用いて、ハッシュを作成し、MTLoop タグで取得するサンプルを示します。

<mt:sethashvar name="week">
<mt:setvar name="mon" value="Monday">
<mt:setvar name="tue" value="Tuesday">
<mt:setvar name="wed" value="Wednesday">
<mt:setvar name="thu" value="Thursday">
<mt:setvar name="fri" value="Friday">
<mt:setvar name="sat" value="Saturday">
<mt:setvar name="sun" value="Sunday">
</mt:sethashvar>
 
<mt:loop name="week">
    <$mt:getvar name="__key__"$> <$mt:getvar name="__value__"$>
</mt:loop>

テンプレートを再構築すると、下のように出力されます。

sun Sunday
fri Friday
tue Tuesday
sat Saturday
mon Monday
wed Wednesday
thu Thursday

配列変数の時と同様、name モディファイアに配列変数名を設定します。ここでは week を設定します。

配列変数 week のキーの値は予約変数 __key__ に、キーに対応する値は予約変数 __value__ に自動的に設定されるので、それぞれ MTGetVar タグの name モディファイアに指定します。

ハッシュは配列のような順序性がありませんが、sort_by モディファイアを設定することで、一定の規則にしたがって出力されます。

キーの文字列順で並べ替え

<mt:loop name="[変数名]" sort_by="key">

キーの文字列順(逆順)で並べ替え

<mt:loop name="[変数名]" sort_by="key reverse">

キーに対応する値の文字列順で並べ替え

<mt:loop name="[変数名]" sort_by="value">

キーに対応する値の文字列順(逆順)で並べ替え

<mt:loop name="[変数名]" sort_by="value reverse">

キーに対応する値の文字を数値として比較・並べ替え

<mt:loop name="[変数名]" sort_by="value numeric">

キーに対応する値の文字を数値として比較・並べ替え(逆順)

<mt:loop name="[変数名]" sort_by="value numeric reverse">
Comments [5] | Trackbacks [0]
2007年12月23日

Movable Type 4.1 ベータ 2 リリース

December 23,2007 12:02 AM
Tag:[, ]
Permalink

Movable Type 4.1 ベータ 2 が公開されました。

ベータ1も含め、ファイルのアップロード画面およびアイテム管理画面が変わっていましたので、以下に紹介します。

ベータ2ではファイルのアップロード画面でフォルダの選択画面が追加されました。

ファイルのアップロード画面1

アップロードしたファイルを使ってブログ記事を作成する時の位置指定に「なし」が追加されました。

ファイルのアップロード画面2

ベータ1から、アイテムの一覧画面が変更されています。画像やファイル名をクリックすると情報を編集できるようになりました。

ファイルのアップロード画面2

画像をクリックすると拡大表示される機能はそのままです。

アイテムの編集画面

これがアイテムの編集画面です。アイテムの名前や説明、タグが編集可能です。

アイテムの編集画面

右下にある「アイテムの埋め込み」をクリックすると、

ファイルのアップロード画面2

このようにテキストフィールドにアイテムのURLが表示されます。

ファイルのアップロード画面2

Comments [5] | Trackbacks [1]
2007年12月19日

Movable Type 4.1 / MTOS における変数での算術演算子の利用方法

December 19,2007 12:10 AM
Tag:[]
Permalink

昨日エントリーした「Movable Type 4.1 / MTOS における配列とハッシュの利用方法」に加え、MT4.1/MTOS では算術演算子の利用が可能になりました。

詳細は後述しますが、可能な演算は、

  • 加算(+)
  • 減算(-)
  • 乗算(*)
  • 除算(/)
  • 剰余(%)
  • インクリメント(++)
  • デクリメント(--)

で、変数の演算結果を同一変数に保持したり、MTIf タグ等での判定や、判定と同時に演算すること等が可能です。

ということで、こちらについても以下に利用方法をまとめてみました。なお、利用可能と思われるテンプレートタグは下記の通りです。

MTIf
MTUnless
MTGetVar
MTSetVar
MTSetVarBlock
MTSetVarTemplate

1.加算

フォーマット

op モディファイアに"+"または"add"を設定します。定義済みの変数に加算する場合は value モディファイアを記述し、加算したい値を設定します。

値を加算のみする場合

<$mt:setvar name="[変数名]" op="+" value="[加算値]"$>
または
<$mt:setvar name="[変数名]" op="add" value="[加算値]"$>

加算後に表示する場合

<$mt:getvar name="[変数名]" op="+" value="[加算値]"$>
または
<$mt:getvar name="[変数名]" op="add" value="[加算値]"$>

加算した結果を判定する場合(例は等しい場合を判定)

<mt:if name="[変数名]" op="+" value="[加算値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="add" value="[加算値]" eq="[比較値]">

サンプル

変数hogeに+1した結果を設定

<$mt:setvar name="hoge" value="1"$>
<$mt:setvar name="hoge" op="+" value="1"$>

変数hogeに+1した結果を表示

<$mt:setvar name="hoge" value="1"$>
<$mt:getvar name="hoge" op="+" value="1"$>

変数hogeに+1した結果が2であるかを判定

<$mt:setvar name="hoge" value="1"$>
<mt:if name="hoge" op="+" value="1" eq="2">
OK
<mt:else>
NG
</mt:if>

2.減算

フォーマット

op モディファイアに"-"または"sub"を設定します。定義済みの変数に減算する場合は value モディファイアを記述し、減算したい値を設定します。

値を減算のみする場合

<$mt:setvar name="[変数名]" op="-" value="[減算値]"$>
または
<$mt:setvar name="[変数名]" op="sub" value="[減算値]"$>

減算後に表示する場合

<$mt:getvar name="[変数名]" op="-" value="[減算値]"$>
または
<$mt:getvar name="[変数名]" op="sub" value="[減算値]"$>

減算した結果を判定する場合(例は等しい場合を判定)

<mt:if name="[変数名]" op="-" value="[減算値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="sub" value="[減算値]" eq="[比較値]">

サンプル

変数hogeから-1した結果を設定

<$mt:setvar name="hoge" value="10"$>
<$mt:setvar name="hoge" op="-" value="1"$>

変数hogeから-1した結果を表示

<$mt:setvar name="hoge" value="10"$>
<$mt:getvar name="hoge" op="-" value="1"$>

変数hogeに-1した結果が2であるかを判定

<$mt:setvar name="hoge" value="3"$>
<mt:if name="hoge" op="-" value="1" eq="2">
OK
<mt:else>
NG
</mt:if>

3.乗算

フォーマット

op モディファイアに"*"または"mul"を設定します。定義済みの変数に乗算する場合は value モディファイアを記述し、乗算したい値を設定します。

値を乗算のみする場合

<$mt:setvar name="[変数名]" op="*" value="[乗数値]"$>
または
<$mt:setvar name="[変数名]" op="mul" value="[乗数値]"$>

乗算後に表示する場合

<$mt:getvar name="[変数名]" op="*" value="[乗数値]"$>
または
<$mt:getvar name="[変数名]" op="mul" value="[乗数値]"$>

乗算した結果を判定する場合(例は等しい場合を判定)

<mt:if name="[変数名]" op="*" value="[乗数値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="mul" value="[乗数値]" eq="[比較値]">

サンプル

変数hogeに2倍した結果を変数に設定

<$mt:setvar name="hoge" value="1"$>
<$mt:setvar name="hoge" op="*" value="2"$>

変数hogeを2倍した結果を表示

<$mt:setvar name="hoge" value="1"$>
<$mt:getvar name="hoge" op="*" value="2"$>

変数hogeに2倍した結果が6であるかを判定

<$mt:setvar name="hoge" value="3"$>
<mt:if name="hoge" op="*" value="2" eq="6">
OK
<mt:else>
NG
</mt:if>

4.除算

フォーマット

op モディファイアに"/"または"div"を設定します。定義済みの変数に除算する場合は value モディファイアを記述し、除算したい値を設定します。

値を除算のみする場合

<$mt:setvar name="[変数名]" op="/" value="[除数値]"$>
または
<$mt:setvar name="[変数名]" op="div" value="[除数値]"$>

除算後に表示する場合

<$mt:getvar name="[変数名]" op="/" value="[除数値]"$>
または
<$mt:getvar name="[変数名]" op="div" value="[除数値]"$>

除算した結果を判定する場合(例は等しい場合を判定)

<mt:if name="[変数名]" op="/" value="[除数値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="div" value="[除数値]" eq="[比較値]">

サンプル

変数hogeを2で割った結果を変数に設定

<$mt:setvar name="hoge" value="10"$>
<$mt:setvar name="hoge" op="/" value="2"$>

変数hogeを2で割った結果を表示

<$mt:setvar name="hoge" value="10"$>
<$mt:getvar name="hoge" op="/" value="2"$>

変数hogeを2で割った結果が3であるかを判定

<$mt:setvar name="hoge" value="6"$>
<mt:if name="hoge" op="/" value="2" eq="3">
OK
<mt:else>
NG
</mt:if>

5.剰余

フォーマット

op モディファイアに"%"または"mod"を設定します。定義済みの変数に剰余する場合は value モディファイアを記述し、剰余したい値を設定します。

値を剰余のみする場合

<$mt:setvar name="[変数名]" op="%" value="[剰余値]"$>
または
<$mt:setvar name="[変数名]" op="mod" value="[剰余値]"$>

剰余後に表示する場合

<$mt:getvar name="[変数名]" op="%" value="[剰余値]"$>
または
<$mt:getvar name="[変数名]" op="mod" value="[剰余値]"$>

剰余した結果を判定する場合(例は等しい場合を判定)

<mt:if name="[変数名]" op="%" value="[剰余値]" eq="[比較値]">
または
<mt:if name="[変数名]" op="mod" value="[剰余値]" eq="[比較値]">

サンプル

変数hogeを3で割った余りを変数に設定

<$mt:setvar name="hoge" value="5"$>
<$mt:setvar name="hoge" op="%" value="3"$>

変数hogeを3で割った余りを表示

<$mt:setvar name="hoge" value="5"$>
<$mt:getvar name="hoge" op="%" value="3"$>

変数hogeを3で割った余りが1であるかを判定

<$mt:setvar name="hoge" value="7"$>
<mt:if name="hoge" op="%" value="3" eq="1">
OK
<mt:else>
NG
</mt:if>

6.インクリメント

「インクリメント」とは、値に1を加算することを指します。

フォーマット

op モディファイアに"++"または"inc"を設定します。なお、定義済みの変数にしかインクリメントすることはできません。

値をインクリメントのみする場合

<$mt:setvar name="[変数名]" op="++"$>
または
<$mt:setvar name="[変数名]" op="inc"$>

インクリメント後に表示する場合

<$mt:getvar name="[変数名]" op="++"$>
または
<$mt:getvar name="[変数名]" op="inc"$>

インクリメントした結果を判定する場合(例は等しい場合を判定)

<mt:if name="[変数名]" op="++" eq="[比較値]">
または
<mt:if name="[変数名]" op="inc" eq="[比較値]">

サンプル

変数hogeをインクリメント

<$mt:setvar name="hoge" value="1"$>
<$mt:setvar name="hoge" op="++"$>

変数hogeをインクリメントした結果を表示

<$mt:setvar name="hoge" value="1"$>
<$mt:getvar name="hoge" op="++"$>

変数hogeをインクリメントした結果が2であるかを判定

<$mt:setvar name="hoge" value="1"$>
<mt:if name="hoge" op="++" eq="2">
OK
<mt:else>
NG
</mt:if>

7.デクリメント

「デクリメント」とは、値から1を減算することを指します。

フォーマット

op モディファイアに"--"または"dec"を設定します。なお、定義済みの変数にしかデクリメントすることはできません。

値をデクリメントのみする場合

<$mt:setvar name="[変数名]" op="--"$>
または
<$mt:setvar name="[変数名]" op="dec"$>

デクリメント後に表示する場合

<$mt:getvar name="[変数名]" op="--"$>
または
<$mt:getvar name="[変数名]" op="dec"$>

デクリメントした結果を判定する場合(例は等しい場合を判定)

<mt:if name="[変数名]" op="--" eq="[比較値]">
または
<mt:if name="[変数名]" op="dec" eq="[比較値]">

サンプル

変数hogeをデクリメント

<$mt:setvar name="hoge" value="10"$>
<$mt:setvar name="hoge" op="--"$>

変数hogeをデクリメントした結果を表示

<$mt:setvar name="hoge" value="10"$>
<$mt:getvar name="hoge" op="--"$>

変数hogeをデクリメントした結果が1であるかを判定

<$mt:setvar name="hoge" value="2"$>
<mt:if name="hoge" op="--" eq="1">
OK
<mt:else>
NG
</mt:if>

8.注意事項

文字列や数字を含んだ文字列に演算を行っても何も行われません。また、ベータ1a版の動作確認では、他のリスト系テンプレートタグとの組み合わせでは初期値が1でないと機能しないようです(下記)。

NG(初期値0)

<$mt:setvar name="hoge" value="0"$>
<MTEntries>
<$mt:setvar name="hoge" op="++"$>
</MTEntries>
<$mt:getvar name="hoge">

OK(初期値1)

<$mt:setvar name="hoge" value="1"$>
<MTEntries>
<$mt:setvar name="hoge" op="++"$>
</MTEntries>
<$mt:getvar name="hoge">
Comments [2] | Trackbacks [2]
2007年12月18日

Movable Type 4.1 / MTOS における配列とハッシュの利用方法

December 18,2007 1:11 AM
Tag:[, , ]
Permalink

公にアナウンスされていないようですが、MT4.1/MTOS では変数で配列とハッシュの操作が可能になり、変数処理がよりプログラマブルになりました。

ということで、以下に利用方法をまとめてみました。

1.配列

配列とは、同じ型のデータを連続的に並べた集合を指します。同一の変数名にインデックス(添え字)を付与することでデータを識別することができます。

例えば、week という変数に、Monday から Sunday までの文字列を設定するには、

week[0] = 'Monday'
week[1] = 'Tuesday'
week[2] = 'Wednesday'
week[3] = 'Thursday'
week[4] = 'Friday'
week[5] = 'Saturday'
week[6] = 'Sunday'

という感じになります。

MTSetVar による配列の設定

MTSetVar タグで配列を設定する方法は2通りあります。name モディファイアの変数名に直接インデックスを記述して、value モディファイアに値を設定するか(下)、

<MTSetVar name="week[0]" value="Mon">
<MTSetVar name="week[1]" value="Tue">
<MTSetVar name="week[2]" value="Wed">
     :

index モディファイアを記述し、そこにインデックスを設定します(下)。value モディファイアは同じです。

<MTSetVar name="week" index="0" value="Mon">
<MTSetVar name="week" index="1" value="Tue">
<MTSetVar name="week" index="2" value="Wed">
     :

MTSetVarBlock による配列の設定

MTSetVar タグに配列を設定する方法も、MTSetVar タグと大体同じで、name モディファイアの変数名に直接インデックスを記述し、value モディファイアの代わりにブロック内に値を記述します。

<MTSetVarBlock name="week[0]">
    :
</MTSetVarBlock>
<MTSetVarBlock name="week[1]">
    :
</MTSetVarBlock>
<MTSetVarBlock name="week[2]">
    :
</MTSetVarBlock>
    :

または、index モディファイアを記述し、そこにインデックスを設定します(下)。

<MTSetVarBlock name="week" index="0">
    :
</MTSetVarBlock>
<MTSetVarBlock name="week" index="1">
    :
</MTSetVarBlock>
<MTSetVarBlock name="week" index="2">
    :
</MTSetVarBlock>
    :

MTFor による配列の設定

単純な数値であれば MTFor で設定することも可能です。

下記に、0~6の値を配列に設定するサンプルを示します。MTFor タグの var モディファイアの変数名に配列のインデックスが設定されます。from モディファイアに最小値、to モディファイアに最大値を設定し、MTFor ブロック内に MTSetVar を記述して、配列のインデックスとなる $x を記述します。

<mt:for var="x" from="0" to="6">
    <MTSetVar name="week[$x]" value="$x">
</mt:for>

MTSetVar の name モディファイアと別に、index モディファイアに $x を記述してもOKです。

<mt:for var="x" from="0" to="6">
    <MTSetVar name="week" index="$x" value="$x">
</mt:for>

繰り返し処理による配列の設定

下記に、ブログ記事タイトルを配列の値に設定するサンプルを示します。

<MTEntries>
    <MTSetVarBlock name="counter"><$MTGetVar name="__counter__"$></MTSetVarBlock>
    <MTSetVarBlock name="entrytitle[$counter]"><$MTEntryTitle$></MTSetVarBlock>
</MTEntries>

2行目の counter は、インデックス値となる __counter__ の値を3行目に直接設定できないため、MTSetVarBlock でワンクッションおいてます。3行目でブログ記事タイトルを配列に設定しています。

配列の取得

配列の内容を取得・表示するには、MTGetVar(または MTVar)で name モディファイアにインデックスつきの変数名を指定します。

<MTGetVar name="week[0]">
<MTGetVar name="week[1]">
<MTGetVar name="week[2]">
     :

実行結果

Mon
Tue
Wed
 :

または、MTGetVar(または MTVar)で name モディファイアと別に index モディファイアにインデックス値を指定します。実行結果は同じです。

<MTGetVar name="week" index="0">
<MTGetVar name="week" index="1">
<MTGetVar name="week" index="2">
     :

さらに MTFor タグを使うことで、繰り返しによる取得も可能です。

MTFor タグの var モディファイアの値が配列のインデックス値となります。from モディファイアに最小値、to モディファイアに最大値を設定し、MTFor ブロック内に MTGetVar を記述して配列の値を取得します。MTGetVar の name モディファイアにインデックス値となる $x を記述します。

<mt:for var="x" from="0" to="6">
    <MTGetVar name="week[$x]">
</mt:for>

MTGetVar の name モディファイアと別に、index モディファイアに $x を記述してもOKです。

<mt:for var="x" from="0" to="6">
    <MTGetVar name="week" index="$x">
</mt:for>

配列の要素数を求める

count 関数により、配列を設定した後の要素数を求めます。
フォーマットは、

<MTGetVar name="count(week)">

で、name モディファイアに要素数を求める関数名(count)と、関数のパラメータ(括弧内)に処理の対象となる配列の変数名を記述します。

実行結果

7

または、

<MTGetVar name="week" function="count">

と書いても同じです。function モディファイアに関数名 count を記述します。

配列の最後からデータを取得する

pop 関数により、配列の最後からデータを取得し、配列から取得データを削除します。
フォーマットは、

<MTGetVar name="pop(week)">

で、name モディファイアに関数名(pop)と、関数のパラメータ(括弧内)に処理の対象となる配列の変数名を記述します。

実行結果(結果には表示されませんが配列のインデックスが-1されています)

Sun

または、

<MTGetVar name="week" function="pop">

と書いても同じです。function モディファイアに関数名 pop を記述します。

配列の先頭からデータを取得する

shift 関数により、配列の先頭からデータを取得し、配列から取得データを削除します。

<MTGetVar name="shift(week)">

で、name モディファイアに関数名(shift)と、関数のパラメータ(括弧内)に処理の対象となる配列の変数名を記述します。

実行結果(結果には表示されませんが配列のインデックスが-1されています)

Mon

または、

<MTGetVar name="week" function="shift">

と書iいても同じです。

2.ハッシュ

ハッシュは、配列のインデックスが文字列となったものです。この文字列となったインデックスを「キー」と呼びます。先の1週間の例では、

week[mon] = 'Monday'
week[tue] = 'Tuesday'
week[wed] = 'Wednesday'
week[thu] = 'Thursday'
week[fri] = 'Friday'
week[sat] = 'Saturday'
week[sun] = 'Sunday'

となります。

MTSetVar にハッシュの設定

MTSetVar タグにハッシュを設定する方法は2通りあります。name モディファイアの変数名に直接キー({}で囲まれた部分)を記述するか(下)、

<MTSetVar name="week{mon}" value="Monday">
<MTSetVar name="week{tue}" value="Tuesday">
     :

key モディファイアを記述し、そこにキーを設定します(下)。

<MTSetVar name="week" key="mon" value="Monday">
<MTSetVar name="week" key="tue" value="Tuesday">
     :

MTSetVarBlock にハッシュの設定

MTSetVarBlock タグにハッシュを設定する方法も、MTSetVar タグと大体同じで、name モディファイアの変数名に直接キーを記述し、value 属性の代わりにブロック内に値を記述します。

<MTSetVarBlock name="week{mon}">
     :
</MTSetVarBlock>
<MTSetVarBlock name="week{tue}">
     :
</MTSetVarBlock>
     :

または、key モディファイアを記述し、そこにキーを設定します(下)。

<MTSetVarBlock name="week" key="mon">
     :
</MTSetVarBlock>
<MTSetVarBlock name="week" key="tue">
     :
</MTSetVarBlock>
     :

ハッシュの取得

ハッシュの内容を取得・表示するには、MTGetVar(または MTVar)で name モディファイアにキーつきの変数名を指定します。

<MTGetVar name="week{mon}">
<MTGetVar name="week{tue}">
     :

実行結果

Monday
Tuesday
  :

または、MTGetVar(または MTVar)で name モディファイアと別に key モディファイアにインデックス値を指定します。実行結果は同じです。

<MTGetVar name="week" key="mon">
<MTGetVar name="week" key="tue">
     :

ハッシュの要素数を求める

ハッシュを設定した後の要素数は次の方法で求めます。

<MTGetVar name="count(week)">

name モディファイアに要素数を求める関数名(count)と、関数のパラメータ(括弧内)に処理の対象となる配列の変数名を記述します。

実行結果

7

または、

<MTGetVar name="week" function="count">

と書いても同じです。

ハッシュから要素を削除する

ハッシュから指定したキーの要素を取得し、同時にハッシュから該当要素を削除します。

<MTGetVar name="delete(week)" key="a">

name モディファイアに要素数を求める関数名(delete)と、関数のパラメータ(括弧内)に処理の対象となる配列の変数名を記述します。

実行結果(結果には表示されませんがハッシュのキーが削除されています)

Monday

または、

<MTGetVar name="week" key="a" function="delete">

と書いても同じです。

以上です。
さらに複雑な制御も可能と思われますがとりあえずこの辺で。

Comments [0] | Trackbacks [1]
2007年12月15日

Movable Type 4.1 カスタムフィールドの使用方法

December 15,2007 2:02 AM
Tag:[, , ]
Permalink

Movable Type 4.1 で追加された「カスタムフィールド」の利用方法です。

この機能は以前、CustomFields プラグインとして公開されていたものが、MT4.1 で新たにアドオンとして追加されました。カスタムフィールドを利用すれば、ブログ管理ユーザがブログ記事投稿画面等に任意のフィールドを新たに追加することができます(下は追加例)。

この機能はプラグインとして配布されている頃から有名でしたが、当ブログでは一度も紹介したことがなかったので、今回は気合を入れて、設定方法およびサンプルによる使用例を記してみました。

1.設定方法

ブログ管理画面より「設定」→「カスタムフィールド」をクリック。

「フィールドを作成」をクリック。なお、左のメニューにも「カスタムフィールド」が追加されています。

このような画面が表示されます。

以下、ブログ記事に「関連リンク」というフィールドを追加する例で設定内容を紹介します。

1.1 システムオブジェクト

フィールドを追加するオブジェクトを「ブログ記事」「ウェブページ」「カテゴリ」「フォルダ」より選択します。

追加フィールドは選択したオブジェクトでのみ利用可能になります。
例えば「ブログ記事」を選択すると、ブログ記事投稿・編集画面に追加したフィールドが表示されます。「カテゴリ」を選択すると、カテゴリを新規作成した後、カテゴリの編集画面に追加したフィールドが表示されます。

1.2 名前

フィールドの名前を入力します(必須項目)。ここでは「関連リンク」と入力します。

以前作成したフィールドと同じ名前を設定するとエラーになりますが、後述するベースネームを変更すれば同じ名前を使うこともできます。

1.3 説明

フィールドの説明を入力します。任意のテキストを入力します。

1.4 種類

フィールドの種類を選択します。ここでは「テキスト(複数行)」を選択します。

選択する種類によって後方の「規定値」や「オプション」等の入力内容が変化します。以下、各メニュー選択時の表示をまとめて掲載しておきます。

テキスト
テキスト(複数行)
チェックボックス
URL
日付と時刻
ドロップダウン
ラジオボタン
アイテム
オーディオ
ビデオ
画像

1.5 必須

フィールドへの値の入力を必須にするかを決定します。

必須にした場合、入力がない状態で保存すると、エラーになります。また、必須に設定すると、各オブジェクトの編集画面上に常に表示されるようになります。

1.6 既定値

フィールドが表示された時に表示あるいは選択される初期値を入力します。

入力すると、ブログ記事投稿時等、該当フィールドに初期値が表示されます。

1.7 ベースネーム

「ベースネーム」は、ブログ記事・ページの「出力ファイル名」、あるいはカテゴリ・フォルダの「ファイル名」と同じで、このフィールドを特定するためにデータベースで使用するものです。基本的に変更する必要はありません。

もし変更する場合は、インストールした Movable Type 内でユニーク(他のフィールドのベースネームと重複しない)な名称にしてください。

1.8 テンプレートタグ

フィールドの値を出力するテンプレートタグを作成します。入力した後、すぐ下の「テンプレートの例」をクリックすれば、値を表示する際に、テンプレートタグをどのように設定すべきかが分かります。

サンプルでは「RelatedLinks」と入力してみました。

なお、「名前」フィールドに半角文字を入力した後、「テンプレートの例」をクリックすると、「名前」フィールドがこのフィールドに反映されるようですが、任意の名称に変更して構いません。

すべて設定したら一番下の「保存」をクリックします。OKであれば下のように登録されます。

必須項目が設定されていないと警告が表示されます。

正常に追加された後、「設定」→「カスタムフィールド」に一覧として表示されます。

2.追加したフィールドの表示

1項の設定で新しいフィールドが追加されました。

サンプルではブログ記事に追加したのでブログ記事投稿・編集画面に表示される筈ですが、デフォルト状態では表示されないため、デフォルトで表示されるための設定をします。

ブログ記事投稿画面右上にある「表示」をクリック。

表示オプションに追加したフィールド(関連リンク)が表示されているので、チェックして、「OK」をクリック。

これでブログ記事投稿画面に「関連リンク」フィールドが表示されました。なかなかいい感じです。

フィールドの種類で「画像」を追加すると、下記のようなフィールドを表示することができます。「imageを選択」をクリックすると画像の選択またはアップロード画面に遷移します。

フィールドの種類で「ラジオボタン」を追加すると、下記の「おすすめ度」のようなフィールドを表示できます。

フィールドの種類で「チェックボックス」を追加すると、下記の「ランダム表示に追加」のようなフィールドを表示できます。ちなみに、チェックされている場合、このフィールドのテンプレートタグには"1"が設定されますので、MTIfタグ等で表示を制御したい場合に有効でしょう。

3.テンプレートの修正

フィールドの内容を表示するためのテンプレートを設定します。
サンプルはブログ記事に表示させているので、「ブログ記事の詳細」に表示するためのタグを追加してみます。

4.フィールドに入力

ブログ記事投稿をしてみます。新しいフィールドにはとりあえず下のように設定してみました。

5.表示

投稿すると下のように表示されました。なかなかいい感じです。

6.フィールドの表示順序

ひとつのオブジェクトに複数のフィールドを表示させると、右下の「フィールドの順序」をクリックすれば、現在表示されているフィールドの順序を入れ替えることができます。

入れ替えるには、入れ替えたいフィールドをドラッグして「保存」をクリックします。

7.注意事項

  • 異なるオブジェクトで同一名称のタグ名は設定できません
  • 一旦作成したフィールドの種別を変更することはできません

2007.12.15
2項の記述を追加・修正し、6項を新たに追加しました。

Comments [39] | Trackbacks [10]
2007年12月14日

Movable Type 4.1 追加タグ一覧

December 14,2007 1:01 AM
Tag:[, ]
Permalink

Movable Type 4.1 で新たに追加されるタグ一覧です。公式サイトでもかなり良質なドキュメントがすでに用意されていますが、やや分かりにくい部分について、ドキュメントからの引用で補足してみました。

1.ブロックタグ

MTFor

いわゆる「for ループ」を行うためのブロックタグです。以下のモディファイアで指定された値にもとづいて、ブロック内を繰り返し処理します。
モディファイア(属性)には下記を設定します。

  • from(start)モディファイア:繰り返しの初期値を指定
  • to(end)モディファイア:繰り返しの最終値を指定
  • increment(step)モディファイア:インクリメント(加算)値を指定。省略時は1ずつ増加
  • glue:ループ中の区切り文字を指定

fromが1、toが10、incrementなしであれば、1,2,3,4,5,6,7,8,9,10と、fromの値を1つずつ加算しながら、10になるまで繰り返されます。

JavaScript であれば、

for (i=0; i<10; i++) {
    // 繰り返したい処理
}

という感じでしょうか。

サンプル

<mt:for var="x" from="5" to="10" glue= " | ">
    <mt:if name="__first__"><p>This is my first time through!</p></mt:if>
    <p>now x = <mt:var name="x"></p>
    <mt:if name="__last__"><p>This is my last time through!</p></mt:if>
</mt:for>

実行結果(見やすいように折り返してます)

<p>This is my first time through!</p>
<p>now x = 5</p> | <p>now x = 6</p> | <p>now x = 7</p> | 
<p>now x = 8</p> | <p>now x = 9</p> | <p>now x = 10</p>
<p>This is my last time through!</p>

変数として下記の予約変数を利用することができます。

  • __first__:ループの初回のみ実行
  • __last__:ループの最後のみ実行
  • __odd__:ループの奇数回目に実行
  • __even__:ループの偶数回目に実行
  • __index__:ループのインデックスを格納
  • __counter__:ループ回数を格納

__index__ と __counter__ 変数の違いは、以下のサンプルで確認することができます。

サンプル

<mt:for var="test" from="10" to="20" increment="2">
    <p>now test = 
    <mt:var name="test"> |
    __index__: <MTVar name="__index__"> |
     __counter__: <MTVar name="__counter__">
    </p>
</mt:for>

実行結果

<p>now test = 10 | __index__: 10 | __counter__: 1</p>
<p>now test = 12 | __index__: 12 | __counter__: 2</p>
<p>now test = 14 | __index__: 14 | __counter__: 3</p>
<p>now test = 16 | __index__: 16 | __counter__: 4</p>
<p>now test = 18 | __index__: 18 | __counter__: 5</p>
<p>now test = 20 | __index__: 20 | __counter__: 6</p>

__counter__ は純粋にループ回数のみを格納しますが、__index__ は「開始値+ループ回数」を格納します。

MTIncludeBlock

既存の MTInclude の機能に加え、テンプレートモジュールをインクルードする際、インクルード元のテンプレートからテンプレートモジュールに任意のコンテンツ(変数)を与えるためのタグです。

インクルード元のテンプレート(例えばメインページ)の内容

<MTIncludeBlock module="Some Module" var="contents">
(do something here)
</MTIncludeBlock>

(do something here) の部分に、テンプレートモジュールに渡したいコンテンツを設定します。

テンプレートモジュール Some Moduleの内容

(header stuff)
<MTVar name="contents">
(footer stuff)

<MTVar name="contents"> の部分に、インクルード元から渡されたコンテンツ(この例では「(do something here)という文字列」)を表示します。

メインページでの実行結果

(header stuff)
(do something here)
(footer stuff)

MTSetVars

複数の変数を一括設定するタグです。

記述フォーマットは「変数名=値」で、複数記述することができます。

<MTSetVars>
変数名1=値1
変数名2=値2
変数名3=値3
  :
</MTSetVars>

となります。空行や前後にスペースが含まれていても除去されます。値にファンクションタグも利用可能です。

<MTSetVars>
a=1
b=foo
c=<$MTBlogName$>
</MTSetVars>

下のようにMTIncludeBlockタグと併用することで、テンプレートモジュールとの連携が可能です。

インクルード元のテンプレートのサンプル(テンプレートモジュールに渡すパラメータを設定)

<MTIncludeBlock module="banner">
<MTSetVars>
    banner_link=http://example.com/
    banner_name=advertisement_a
    banner_width=728
    banner_height=90
</MTSetVars>
</MTIncludeBlock>

bannerテンプレートモジュールのサンプル

<img src="<$mt:getvar name="banner_link"$>"
     alt="<$mt:getvar name="banner_name"$>"
     width="<$mt:getvar name="banner_width"$>"
     height="<$mt:getvar name="banner_height"$>" />

実行結果

<img src="http://example.com/"
     alt="advertisement_a"
     width="728"
     height="90" />

MTIncludeBlockでbannerをインクルードする時、MTIncludeBlockブロック内のMTSetVarsに設定された変数が、bannerテンプレートモジュールに渡されます。

bannerテンプレートモジュールでは、MTGetVarによって指定した変数(banner_xxx)をインクルード元から受け取り、値をそれぞれ埋め込み、変数が展開されたものをインクルード元のテンプレートにわたします。

MTAuthorUserpicAsset

登録ユーザのプロフィール画像リストを表示します。
MTAuthorsブロックタグ内で有効のようで、ブロックタグ内でアイテム関連のテンプレートタグを利用することができます。

サンプル

<ul><mt:Authors>
     <mt:AuthorUserpicAsset>
       <li>
         <img src="<mt:AssetThumbnailURL width="20" height="20">" width="20" height="20"  />
         <mt:AuthorName>
       </li>
     </mt:AuthorUserpicAsset>
</mt:Authors></ul>

MTEntryAuthorUserpicAsset

ブログ記事投稿者のプロフィール画像を表示します。
MTEntriesブロックタグ、ブログ記事アーカイブ等で有効で、ブロックタグ内でアイテム関連のテンプレートタグを利用することができます。

サンプル

<ul><mt:Entries>
     <mt:EntryAuthorUserpicAsset>
       <li>
         <img src="<mt:AssetThumbnailURL width="20" height="20">" width="20" height="20"  />
       </li>
     </mt:EntryAuthorUserpicAsset>
</mt:Entries></ul>

MTCommenterUserpicAsset

コメント投稿者のプロフィール画像を表示します。
MTCommentsブロックタグ内で有効のようで、ブロックタグ内でアイテム関連のテンプレートタグを利用することができます。

サンプル

<ul><mt:Comments>
     <mt:CommenterUserpicAsset>
       <li>
         <img src="<mt:AssetThumbnailURL width="20" height="20">" width="20" height="20"  />
       </li>
     </mt:CommenterUserpicAsset>
</mt:Comments></ul>

2.ファンクションタグ

MTNotifyScript

通知スクリプトのファイル名を表示します。

設定例

<mt:CGIPath><mt:NotifyScript>

実行結果

http://・・・/mt-add-notify.cgi 

MTCommenterUsername

コメント投稿者名を表示します。

MTCommenterID

コメント投稿者のIDを表示します。

上記2つのタグのサンプル

<mt:Entries>
    <h1><mt:EntryTitle></h1>
    <mt:Comments>
        <a name="comment-<mt:CommentID>"></a>
        <p><mt:CommentBody></p>
        <cite><a href="/profiles/<mt:CommenterID>"><mt:CommenterUserName></a></cite>
    </mt:Comments>
</mt:Entries>

MTCommenterURL

コメント投稿者のURLを表示します。

MTCommenterUserpic

コメント投稿者のプロフィール画像を表示します。

サンプル

<h2>最近コメントしたユーザー</h2>
<mt:Comments>
    <div class="userpic" style="float: left; padding: 5px;"><mt:CommenterUserpic></div>
</mt:Comments>

実行結果

<h2>最近コメントしたユーザー</h2>
    <div class="userpic" style="float: left; padding: 5px;"><img src="http://yourblog.com/userpics/1.jpg" width="100" height="100" /></div>

MTCommenterUserpicURL

コメント投稿者のプロフィール画像URLを表示します。

サンプル

<img src="<mt:CommenterUserpicURL>" width="100" height="100" />

MTAuthorUserpic

登録ユーザのプロフィール画像を表示を表示します。

サンプル

<ul><mt:Authors>
     <mt:AuthorUserpicAsset>
       <li>
         <mt:AuthorUserpic>
         <mt:AuthorName>
       </li>
     </mt:AuthorUserpicAsset>
</mt:Authors></ul>

MTAuthorUserpicURL

登録ユーザのプロフィール画像URLを表示を表示します。

サンプル

<img alt="" src="<mt:EntryAuthorUserpicURL>" width="100" height="100" />

MTBlogTemplateSetID

ブログで使用しているテンプレートセットを特定するためのIDを出力するファンクションタグです。

サンプル

<body class="<mt:BlogTemplateSetID>">

結果のIDは"mt-blog"等の文字列が表示されます。

MTEntryClassLabel

コンテンツがブログ記事かウェブページかを表示します。

サンプル

<MTSearchResults>
<div class="search-results-container">
    </MTBlogResultHeader>
<mt:SetVarBlock name="type"><mt:EntryClassLabel></mt:SetVarBlock>
<mt:If name="$type" eq="Page">
<$MTInclude module="Page Summary"$>
<mt:Else>
<$MTInclude module="Entry Summary"$>
</mt:If>
    <MTBlogResultFooter>
</div>
    </MTBlogResultFooter>
</MTSearchResults>

上記のサンプルでは"Page"で判定していますが、日本語環境で実行した場合、ブログ記事で実行すると"ブログ記事"、ウェブページで実行すると"ウェブページ"が返却されるようです。

MTEntryAuthorUserpic

ブログ記事投稿者のプロフィール画像を表示します。

実行結果

<img src="http://yourblog.com/userpics/1.jpg" width="100" height="100" />

MTEntryAuthorUserpicURL

ブログ記事投稿者のプロフィール画像URLを表示します。

サンプル

<img src="<mt:EntryAuthorUserpicURL>" width="100" height="100" />

MTCommentLink

投稿されたコメントへのパーマリンク URL を表示を表示します。

同じ結果になるタグ

<$MTEntryPermalink$>#comment-<$MTCommentID$>

と等しい。

MTCategoryCommentCount

カテゴリーへのコメント数を表示します。

サンプル

<ul><mt:Categories>
    <li><mt:CategoryLabel> (<mt:CategoryCommentCount>)</li>
</mt:Categories></ul>

3.MTOSとの差分

以下はMTOSとの差分です。MT4.1のドキュメントには掲載されていませんでした。
以下、推測で書いています。間違っていたらすいません。

MTIfBlog

ブログIDを判定

MTIfAuthor

登録ユーザを判定

MTAuthorHasEntry

ユーザがブログ記事を投稿しているかを判定

MTAuthorHasPage

ユーザがウェブページを作成しているかを判定

モディファイア

wrap_text

4.関連記事

Comments [0] | Trackbacks [0]
2007年12月13日

Movable Type 4.1 ベータテスト開始

December 13,2007 4:23 PM
Tag:[, ]
Permalink

Movable Type 4.1 ベータテストが12月14日より開始されます。

シックス・アパートが、最新ブログ・ソフトウェア「Movable Type 4.1」を発表

「Movable Type 4.1」での最大の強化点は、CMS機能として高いニーズがある「カスタムフィールド機能」を基本機能として標準搭載することです。カスタムフィールド機能を利用することで、ブログ記事やウェブページ作成時の、管理画面の入力項目を、任意に追加・拡張することができるようになり、ウェブサイトの運用・管理の手間を大幅に削減することが可能です。これまでも同様な機能を持つプラグインがありましたが、「Movable Type 4.1」では、システムの基本機能として統合することで、操作性やカスタマイズ性がさらに向上し、CMSとして様々な種類のウェブサイトの制作に対応することが可能になります。
さらに、デザインのカスタマイズ性も向上しています。「Movable Type 4.1」では、ウェブサイトを作成するテンプレートをまとめてテンプレートセットとして管理・設定する機能を新たに提供するほか、ブログ記事を編集するエディタ機能を任意の外部ソフトウェアに変更する機能も追加し、多様なニーズにあわせた柔軟なサイト管理を実現します。

ということで、個人的に 4.1 の注目機能は、「カスタムフィールド機能」と「テンプレートセット」でしょうか。
「テンプレートセット」とは、4.0まではテンプレートを1つずつ編集する必要がありましたが、「Movable Type 4.1」ではウェブサイトを作成するテンプレートをまとめて管理・設定する機能らしいです。

Movable Type 4.1 ベータ版のサイトは下記です。

Movable Type 4.1 ベータ

Movable Type 4.1 では、多くのバグフィクス、パフォーマンスの改善、セキュリティ強化に加え、以下のような機能を提供します。

  • ブログ記事などの入力フィールドを拡張する、カスタムフィールド機能
  • プラガブルになったテキストエディタで、標準の WYSIWYG エディタ以外のエディタの導入も簡単に
  • テンプレートセット登録・設定機能で、ウェブサイトで利用するテンプレートの導入が簡単に
  • 管理している全てのブログで共通利用できるグローバルテンプレート機能
  • 登録ユーザーのプローフィール画像登録・表示機能
  • アップロードしたアイテムの情報変更機能
  • テンプレートで使用している MT タグの、リファレンスリンク付きリスト表示機能
  • ブログ記事・ウェブページ作成ページのリニューアル
  • テンプレートタグの追加と拡張

なお、カスタムフィールド機能は、MTOS(オープンソース・ライセンス版)には含まれません。

Comments [0] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3