TopMovable Typeテンプレートタグ > 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月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月 6日

サイドバーの表示をメインページと同じにする

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

Movable Type 4 で、サイドバーの表示をメインページと同じにするカスタマイズです。
複数の方から「各ページのサイドバーの表示をメインページを同じしたいのですが」という質問を頂きましたので、このエントリーで紹介致します。

ここでは当ブログの配布テンプレート「Movable Type テンプレート」を例に説明しますが、デフォルトテンプレートでも同様のカスタマイズが可能です。

なお、このエントリーのカスタマイズを行うだけではメインページと全く同じ表示にならないのですが、そのことについては次回のエントリーで解説します。

1.ページによってサイドバーの表示内容が異なる仕組み

ページによってサイドバーの表示内容が異なるのは、サイドバーの各リストを MTIf タグで括り、表示するページを振り分けているためです。MTIf は Movable Type 4 で新たに追加されたテンプレートタグで、ある値を判定することで処理を振り分ける、という機能をもっています。

例えば、タグクラウドがメインページでしか表示されないのは、下のように MTIf タグで全体を括っています。

<MTIf name="main_index">
<dt class="sidetitle">
Tag Clouds
</dt>
 
<dd class="side">
<ul id="tags">
<MTTags>
<li class="module-list-item taglevel<$MTTagRank$>">
<a href="<$MTTagSearchLink$>"><$MTTagName$></a>
</li>
</MTTags>
</ul>
</dd>
</MTIf>

そして、MTIf タグの name 属性に記述された main_index という変数の値が "1" の場合にのみ、MTIf タグブロック内部が実行(=再構築対象)されます。
main_index という変数は、メインインデックスを再構築する時だけ "1" になる仕組みになっています。

また、月別アーカイブリストは、

<MTIf name="module_monthly_archives">
<MTIfArchiveTypeEnabled archive_type="Monthly">
<dt class="sidetitle">
Monthly Archives
</dt>
 
<dd class="side">
<ul>
<MTArchiveList archive_type="Monthly">
<li><a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a> [<$MTArchiveCount$>]</li>
</MTArchiveList>
</ul>
</dd>
</MTIfArchiveTypeEnabled>
</MTIf>

と、MTIf タグの name 属性に module_monthly_archives という変数名を用いています。そして月別アーカイブの再構築時だけ module_monthly_archives の値が "1" になり、MTIf タグブロック内が再構築対象となります。

2.メインページと同じ表示にする方法

方法は、各リストを括っているMTIf タグを外すだけです。ただし、「最近のエントリー」については冒頭に記した通り、MTIf タグを外しただけではメインページと同じ表示にならないので、その点は予めご了承ください。

以下、リスト別に示します。赤色部分を削除してください。

最近のエントリー

<MTIf name="module_recent_entries">
<dt class="sidetitle">
Recent Entries
</dt>
 
<dd class="side">
<ul>
<MTEntries lastn="10">
<li><a href="<$MTEntryPermalink$>" title="e<$MTEntryID$>"><$MTEntryTitle$></a></li>
</MTEntries>
</ul>
</dd>
</MTIf>

タグクラウド

<MTIf name="main_index">
<dt class="sidetitle">
Tag Clouds
</dt>
 
<dd class="side">
<ul id="tags">
<MTTags>
<li class="module-list-item taglevel<$MTTagRank$>">
<a href="<$MTTagSearchLink$>"><$MTTagName$></a>
</li>
</MTTags>
</ul>
</dd>
</MTIf>

カテゴリーリスト

<MTIf name="module_category_archives">
<MTIfArchiveTypeEnabled archive_type="Category">
<dt class="sidetitle">
Categories
</dt>
 
<dd class="side">
<div id="categories">
<MTTopLevelCategories>
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse max_depth="3">
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTTopLevelCategories>
</div>
</dd>
</MTIfArchiveTypeEnabled>
</MTIf>

月別アーカイブリスト

<MTIf name="module_monthly_archives">
<MTIfArchiveTypeEnabled archive_type="Monthly">
<dt class="sidetitle">
Monthly Archives
</dt>
 
<dd class="side">
<ul>
<MTArchiveList archive_type="Monthly">
<li><a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a> [<$MTArchiveCount$>]</li>
</MTArchiveList>
</ul>
</dd>
</MTIfArchiveTypeEnabled>
</MTIf>

3.注意事項

タグクラウドは再構築のパフォーマンスに影響があるため、他のアーカイブで表示させない(MTIf タグを外さない)ことをお勧めします。
表示させたい場合は Ajax モジュール化を行ないましょう。

4.サイドバーの MTIf タグに設定されている変数名

参考までに、デフォルトテンプレート(3 カラム)で、各リストの MTIf タグに設定されている変数名をまとめました(配布テンプレートも基本的にこの仕組みにしたがっています)。

リスト名変数名
タグクラウドmain_index
ユーザーアーカイブリストmodule_author_archives
月別アーカイブリストmodule_monthly_archives
月別カテゴリーアーカイブリストmodule_category-monthly_archives
月別ユーザアーカイブリストmodule_author-monthly_archives
最近のエントリーmodule_recent_entries
アイテムリストmain_index
サブカテゴリーリストmodule_category_archives

上記の各変数名がどのページで "1" になるかについては「予約変数一覧 for Movable Type 4(その1)」を参考にしてください。

なお、

main_index
module_recent_entries

の2つの変数については、どちらもメインページのみで "1" となります。

Comments [7] | 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
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