Hatena::ブログ(Diary)

生涯一マークアップエンジニアだっ!!

2009-06-25

MTの繰り返す系ブロックタグで最初とか最後を取得

MTリファレンスは時々不親切。

<mt:Categories>でカテゴリ取得をする際、最初とか最後だけ処理をさせたい場合に

どう書けばいいのか分からず、小一時間ほどはまりましたよ。


<mt:Entries>の場合は


<mt:Entries>
<mt:EntriesHeader>
最初の場合だけ処理
</mt:EntriesHeader>

<MTEntriesFooter>
最後の場合だけ処理
</MTEntriesFooter>

</mt:Entries>


でOKなんやけど、<mt:Categories>にはそんなタグがない。

で、どうするか。



<mt:Categories>

<mt:If name="__first__">
最後の場合だけ処理
</mt:If>

<mt:If name="__last__">
最後の場合だけ処理
</mt:If>

</mt:Categories>


で、解決!


今日の午後の黄昏BGM♪

東京ハチミツオーケストラチャットモンチー

2009-02-05

MTのDBに入っている古いデータの謎

MTDBを見ていると、変なデータを見つけた。

テンプレートの内容が保持されているテーブルで、ものすごく古いデータを発見。

template_textフィールドにすごい前に登録した値が入っている。

template_created_on(おそらく作成日)の値も古い。

なぜMTはこんな値を保持してるのか?


私のMTテンプレートは「ファイルへのリンク」を使っているんですが、

以前は「ファイルへのリンク」を使わずに直接入力していた。

その頃のデータだろうか?だとすると以下が考えられる



1)「ファイルへのリンク」で設定されたファイル内容は、参照されるだけでDBに上書きはされない


2)「ファイルへのリンク」で設定されたファイル内容がDBに登録される際、元々あったDBのデータとは別のレコードで登録される。



どちらだろうか。小粋空間さんによると以下の通り


http://www.koikikukan.com/archives/2007/05/08-015050.php


DBには登録されるはずなので、(1)は考えられないということになる。

残っているということは(2)ということになるのだが、なぜ残るんだろう?

これってもし「ファイルへのリンク」を消してしまえば、古い内容が

復活するということなんだよな?

なんだかイマイチ腑に落ちない感じがする。


今日のお疲れ!BGM♪

季節の中で/松山千春

2008-07-05

MTIfで変数と変数を比較する方法がやっと分かった。

ここ何週間かMT漬けでした。仕事でMTが導入することが決まり、あれよあれよという間に

私の手元に。ちょうどいい機会だからがっつり勉強すっかー、という訳でMT漬けってましたよ。


で。


MTが何なのか、という説明は置いといて。(超ざっくり書くと「ソース生成マシン」。ブログ記事を入力して

ポチっとすると、決められたテンプレートに沿ってソースを生成する。それだけ。)

MTにはMTIfタグっていう条件分岐を指定するタグがあるんですが、これについてメモメモ。


MTIfについて

<$MTSetVar name="hoge" value="baka"$>

<MTIf name="hoge" eq="baka">
ここ変数hogeの値がbakaと一致した場合の処理を書く
</MTIf>

要はMTSetVarで宣言した変数と、指定の値と一致している(していない、とかいう指定もできますが)

かどうかを調べる。変数と任意の値を比較して条件分岐させる場合は、これで

問題ないと思うんすよね。ただ、変数同士を比較する場合が分からなかった。

まず、変数の取得は


<$MTGetVar name="hoge"$>

で取ってこれるんですが、MTIfの中でMTタグは使えないので


<MTIf name="hoge" eq="<$MTGetVar name="hoge"$>">
ここ変数hogeの値がbakaと一致した場合の処理を書く
</MTIf>

とすると、正しく処理されない。

こういう場合は


<MTIf name="aho" eq="$hoge">
ここ変数hogeの値がbakaと一致した場合の処理を書く
</MTIf>

とすると変数がとれる。

これってperl知ってたら速攻で解決してたのかもね。

結構ハマってしまいました。

蛇足ですが、変数にMTタグで取得した値を入れるのは


<MTSetVarBlock name="page_title">
  <$MTEntryTitle$>
</MTSetVarBlock>

とかってすると、変数page_titleにエントリのタイトルが入ります。


SixApartのMTリファレンスはすごい充実してますね。

HTML/CSSやってる人は、CMSツールのテンプレ作成を求められることがこれからは増えて

くるんじゃないかと思うんで、一度見てみるとよいかもですよ。


今日のまったりBGM♪

ガリガリ君/電気グルーヴ