MT | memo-memo Skip to content

memo-memo

web制作に便利そうな情報をメモるブログ

Archive

Tag: MT

mtで使う演算子のメモ

演算 記号 演算文字
可算 + add
減算 - sub
乗算 * mul
除算 / div
剰余 % mod
インクリメント ++ inc
デクリメント dec

こんな感じに使います。

<h1>mtで演算</h2>
<$mt:setvar name="foo" value="1"$>
<$mt:setvar name="foo" op="++"$>
<p>変数fooは、<$mt:getvar name="foo"$>です。</p>
<$mt:setvar name="foo2" value="1"$>
<p>出力時に5を足した変数foo2は、<$mt:getvar name="foo2" op="add" value="5"$>です。</p>
<p>変数foo2は、<$mt:getvar name="foo2"$>です。</p>

これを出力すると、

<h1>mtで演算</h1>
<p>変数fooは、2です。</p>
<p>出力時に5を足した変数foo2は、6です。</p>
<p>変数foo2は、1です。</p>

こんな感じに出力されます。
出力時に5を可算した変数foo2を、可算せずにそのまま出力すると、1のままになる様です。
基本的には、例えば可算の場合、「+」と「add」はどちらでもOKっぽい。
opモディファイアで演算子を選んで、valueモディファイアで値を指定するらしい。
ただ、インクリメントとデクリメントは、valueモディファイアの指定は出来ないらしい。(そりゃそうだ)
javascriptや、phpに比べると、ちょっと回りくどい書き方だなぁ。

またメモです。

変数名 意味と値
__first__ 初回の繰り返しであれば1
__last__ 最後の繰り返しであれば1
__odd__ 奇数回の繰り返しであれば1
__even__ 偶数回の繰り返しであれば1
__counter__ 繰り返し回数

例えば、こんな感じに使います。

<MTEntries>
 <mt:if name="__first__">
 <dl>
 </mt:if>
 <dt><$mt:getvar name="__counter__"$>回目の繰り返し。</dt>
 <dd><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></dd>
 <mt:if name="__last__">
 </dl>
 </mt:if>
</MTEntries>

上記を再構築すると、

<dl>
<dt>1回目の繰り返し</dt>
<dd><a href="リンク先その1">記事のタイトルその1</a></dd>
<dt>2回目の繰り返し</dt>
<dd><a  href="リンク先その2">記事のタイトルその2</a></dd>
…
…
…
</dl>

こんな感じのコードが出力されます。

こんな感じにメモっとくと便利かも。

モディファイア名 コンテナされたサブテンプレートを実行する条件 該当するPearの演算子
eq nameモディファイアの値がeqモディファイアの値と等しい場合 ==
ne nameモディファイアの値がneモディファイアの値と等しくない場合 !=
lt nameモディファイアの値がltモディファイアの値より小さい場合 <
le nameモディファイアの値がleモディファイアの値以下の場合 <=
gt nameモディファイアの値がgtモディファイアの値より大きい場合 >
ge nameモディファイアの値がgeモディファイアの値以上の場合 >=
like nameモディファイアの値がlikeモディファイアで指定した文字列を含む場合 =~

likeは、あんまり慣れないなぁ。

やっぱpealは解らん。

またまたMTの記事。そして、またまたテキストほぼ丸写し…

<mt:setvarblock name="entryid"><$MTEntryID$></mt:setvarblock>
<mt:setvarblock name="entrycategory"><$MTEntryCategory$></mt:setvarblock>
<dl>
<dt>同一カテゴリーに含まれるブログ記事一覧</dt>
<dd>
<ul>
<MTEntries category="$entrycategory">
<mt:setvarblock name="currententryid"><$MTEntryID$></mt:setvarblock>
<mt:if name="currententryid" ne="$entryid">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</mt:if>
</MTEntries>
</ul>
</dd>
</dl>

まずは、赤文字の所で、変数entryidに記事のIDを、変数entrycategoryに記事のカテゴリーを格納。

青文字で、カテゴリーが変数entrycategoryと同一の物、(様は、その記事と同じカテゴリーの物)を取得。

緑文字で、青文字の<MTEntry>で取得する記事のIDを取得。

オレンジ文字で、変数entryid意外の記事、(様は、その記事を)除外する。

こんな感じです。

最近MTの記事ばっかりだ…
今回は、カテゴリーのツリーを表示する方法。
条件分岐の練習にもってこいです。多分…
コードは、

<MTTopLevelCategories>
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
 <li><a href="<$MTCategoryArchiveLink$>"
 title="<$MTCategoryDescription$>"><$MTCategoryLabel$></a>[<$MTCategoryCount$>]
<ul>
<MTEntries>
 <li><a href="<$MTEntryPermaLink$>"><$MTEntryTitle$></a></li>
 </MTEntries>
 </ul>
 <MTElse>
 <li><MTCategoryLabel>
</MTIfNonZero>
<$MTSubCatsRecurse$>
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTTopLevelCategories> 

テキストに書いてあったのを丸写しだ…

赤文字の<MTTopLevelCategories>は、最上位の階層から順番に実行するタグ。

青文字の<MTSubCatIsFirst><ul></MTSubCatIsFirst>は、あるサブカテゴリーの一番最初の時だけ実行される。同じ様に、2番目の青文字の、<MTSubCatIsLast></ul></MTSubCatIsLast>は、最後の時だけ実行される。

緑文字の

<MTIfNonZero tag="MTCategoryCount">
処理
<MTElse>
処理
</MTIfNonZero>

で、条件分岐をしている。tag=”MTCategoryCount”で、カテゴリーに含まれるブログ記事の数を判定させる。様は、そのカテゴリーに記事が投稿されているか、されていないかで条件分岐をしている。

若干まだ上手く飲み込めずに居るのが、シアン文字の<$MTSubCatsRecurse$>。

様は、このタグは、現在処理しているタグに、小カテゴリーが存在する場合、その小カテゴリーをTopLevelCategoriesの対象データとして実行されるらしい。「再帰処理」というらしい。

MTリファレンスはこちら。

小カテゴリーが存在する場合は、始めに戻って、その小カテゴリーをTopLevelCategoriesとして、言わば「一段下げて」処理するってこと?

この辺りが大分まだあやしいです(笑)

勉強あるのみ。

ちなみに再構築すると、こんな感じになりました。

http://sklgheirhn.uh-oh.jp/category.html