Jan23

MT4のカスタマイズのポイント

MTはなんといってもカスタマイズが簡単な事がすごく便利なポイントであると思います。今回はMT4でのカスタマイズにフォーカスを当ててMTでのカスタマイズのKeyとなるMTSetVarBlockMTIfをノンプログラマーから見た視点で解説をしたいと思います。

MTSetVarBlockとは変数を格納できる箱である

MTSetVarBlockはMTタグでカテゴリーであったりエントリーのIDなどの変数(条件によって変わる値)を格納する機能があります。name属性に変数を代入するイメージですね。"このカテゴリーにはこれを表示したい”なんてときは下記のように記述します。

<MTSetVarBlock name="catList"><$MTEntryCategory$></MTSetVarBlock>

注意点としてはMTをスタティック(静的)に生成している場合MTSetVarBlock内で改行を入れたらエラーが出るので気をつけましょう。

そして、現在のページのカテゴリーを格納した変数を利用する場合は下記のようにMTEntriesタグにname属性で指定した変数を代入します。そうすることで、同じカテゴリーのエントリーへのリンクを表示することができます。

<MTSetVarBlock name="catList"><$MTEntryCategory$></MTSetVarBlock>
<MTEntries category="$catList">
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
</MTEntries>

MTifは見たまんま分岐構文ifの役割で使用する

上記の例だと現在のページのエントリーも一緒になって表示されるので、現在のページは除外して表示したいですよね。そういうときにMTifを使って現在のエントリーは除外するように指定します。属性で今回使用したneはMTSetVarBlockで格納した変数とnameで指定した変数とが一致しない場合にのみ実行するという意味です。 属性について詳しくはMTif|テンプレートタグリファレンスで確認してください。

<MTSetVarBlock name="thisEntry"><$MTEntryID$></MTSetVarBlock>
<!-- 現在のエントリーのIDの変数を格納する //-->
<MTEntryCategories>
<!-- 現在のページのカテゴリーを実行 //-->
<MTSetVarBlock name="catList"><$MTEntryCategory$></MTSetVarBlock>
<!-- 現在のページのカテゴリーをcatList変数に格納する //-->
<MTEntries category="$catList">
<!-- 現在のページのカテゴリーのエントリーの表示を実行 //-->
<MTSetVarBlock name="enID"><$MTEntryID$></MTSetVarBlock>
<!-- エントリーのIDの変数を格納する //-->
<MTIf name="thisEntry" ne="$enID">
<!-- 現在エントリーのIDを比較して現在のエントリーを除外する //-->
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
<!-- リンクを表示する //-->
</MTIf>
</MTEntries>
</MTEntryCategories>

やっぱりわからなかった!という方のために、このMTSetVarBlockとMTifでこんな事ができるんだという記事をご紹介します。丁寧に解説されてますので、おそらく理解できるかと思います。

これと同じような使い方でMTでは同じように変数を格納するMTSetVarと格納した変数を呼び出すMTGetVarを利用してCSSも色々カスタマイズできちゃいます。MTSetVarとMTSetVarBlockの大きな違いは変数に設定する値に MTタグが利用できるかどうかです。※MTSetVarBlockのほうがMTタグを利用できます。

Related entries

Track back URL

http://u-ziq.com/cgi/mt/mt-tb.cgi/227

コメント

はじめまして。
Movable Type version 4.1で個別記事ページに、同一カテゴリの記事リストを表示したくてここで紹介されているMTEntriesタグにname属性で指定した変数を代入する方法を試しているのですが「すべてのファイルを再構築」もしくは「ブログ記事アーカイブのみを再構築」すると、DBI.pm line 119エラーがでてしまいます。
MTOS4.1でも同じエラー現象が起こりました。
※新規エントリーや1ページづつ再構築だとエラーなし。
一括再構築のときのみエラーが出てしまう原因がわからないのですが、Movable Typeのバージョンの違いが関係してくるのでしょうか?
もしわかるようでしたらご伝授いただけるとありがたいです。
よろしくお願いします。

はじめまして。サーバーはロリポップやさくらといった格安レンタルサーバーでしょうか?
原因はよくわかりませんが、ロリポップで全体を再構築するとMT4.1ではしょっちゅう中途半端に再構築される現象が起こっています。

原因はロリポップのサーバーの性能の問題だという記事を見つけました。解決策としては、mt-configの#EntriesPerRebuild 40の部分を EntriesPerRebuild 10に設定する事で、一度に再構築するエントリー数を減らすようにすると負荷が軽減し、大体治ると解説されていました。

個別エントリーを表示する処理に耐え切れないのかもしれませんね。解決策になっていなくてすいません。。。


Coments

▲TOP

FEED

RSS    

JOB INFO




ANNOUNCE

  • 現在はありません。イベント&セミナーなどのお知らせを掲載してほしい方はお問い合わせフォームよりお気軽にご連絡ください。

WHO IS WRITING

テクノラティお気に入りに追加する

WEBデザインとシステムの共存、WEBストラテジーを考えた情報設計(IA)