アファメーションで独立・起業・夢実現。「いきなり!社長宣言!!」-“夢は口に出すことで実現する!”というアファメーション:ライブラリー

2007年8月16日

MovableType4(ムーバブルタイプ4)のdoctype宣言の手前の無駄な改行を消す。

夢実現のアファメーションを実践する起業家にもっとも読まれているブログは?

テンプレートをほんのちょっといじってみよう。

doctype宣言の前に何らかの文字列(テキストや改行、xml宣言など)が入っていると、IE6では「標準モード」ではなく「互換モード」でレンダリングされてしまうというバグ(?)があるのは周知の事実。
(そもそも正式なxhtmlは、ある条件以外の場合、doctype宣言の前にxml宣言を入れないといけないので、IE6が“困ったちゃん”なんだけど。汗)

んで、残念ながらMovableType4(ムーバブルタイプ4)では、デフォルトの状態で無意味な改行が大量に挿入されてしまう。

まぁ、いろんなハックを使えば回避できるんだけど、なんとなく気持ち悪い。
そんなわけで、テンプレートをちまちまいじってみると回避法が。

MTSetVarは変数タグ。

テンプレートを見てみると、doctype宣言などを出力するモジュールの前に、MTSetVarという変数タグが複数挿入されている。

んで、どうやらこの変数タグの前後に改行が挿入されているので、静的なHTMLが吐き出されたときにdoctype前に無駄な改行が挿入されてしまうらしい。

ってことで、doctype宣言の手前の改行を消したい場合、この部分の改行を削除して、一行で書いてしまえば良い。

具体的には

<MTSetVar name="body_class" value="mt-main-index">
<MTSetVar name="main_template" value="1">
<MTSetVar name="main_index" value="1">
<MTSetVar name="sidebar" value="1">
<MTSetVar name="module_recent_entries" value="1">
<MTSetVar name="module_category_archives" value="1">
<MTSetVar name="module_author_archives" value="1">
<MTSetVar name="module_monthly_archives" value="1">

<$MTInclude module="ヘッダー"$>

となっているところを「メインページ」のテンプレートの場合、

<MTSetVar name="body_class" value="mt-main-index"><MTSetVar name="main_template" value="1"><MTSetVar name="main_index" value="1"><MTSetVar name="sidebar" value="1"><MTSetVar name="module_recent_entries" value="1"><MTSetVar name="module_category_archives" value="1"><MTSetVar name="module_author_archives" value="1"><MTSetVar name="module_monthly_archives" value="1"><$MTInclude module="ヘッダー"$>

と、一行で書ききってしまう。

ちなみに、このMTSetVarは、変数タグと呼ばれるもので、MTGetVarとセットで

<MTSetVar name="変数名" value="変数に入れる値">

<MTGetVar name="変数名">

という使い方をするものらしい。
(あんまり使う機会がなかった。汗)

参照:MTSetVar と MTGetVar を使う

ヘッダーモジュールの中身を覗いてみると、確かにそれらしき記述が…。

うむぅ。覚えてしまえばかなり効率的にテンプレートやモジュールを管理できるんだろうけど…めんどくさい。(笑)

まぁ、CMSとしてMT4を使う場合、テンプレートを一から書き起こすことになると思うので、あんまり使う機会はないのかなー。
(つまり、ヘッダーモジュールの手前から該当箇所を削除してしまう。)

…と、なんちゃってMTユーザーですんんません。(汗)

関連記事

この記事に関連する(かもしれない)書籍

 

投稿者 kuro : 2007年8月16日 18:56 | ID:716

ページトップ△

ページトップ△