お知らせ

これだけは知っておきたい Webアプリケーションの常識 2008年3月28日

これだけは知っておきたい Webアプリケーションの常識」が発売されました。
Webアプリケーションを作る上では、HTTPのプロトコルや、開発言語、データベースなど、さまざまな知識を組み合わせることが必要になります。
それらを全般的にまとめた一冊です。
Webアプリケーション開発にチャレンジしたい方や、実際に開発までしないまでも基礎知識として知っておきたい方にお勧めです。

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

ページ先頭の改行を削除する

| コメント(4) | トラックバック(4)

Movable Type 4では、テンプレートのモジュール化が押し進められています。
そして、組み込むモジュールを判別するために、インデックステンプレートやアーカイブテンプレートの先頭で、MTSetVarタグを使って変数を多数定義しています。
ところが、このタグがあるために、出力されたページの先頭に空の改行が入り、DOCTYPE宣言がページの先頭にならないという問題があります。

・参考
MT4のヘッダ部分(WolaWola)
Movable Type 4 の PHP 化で XML 宣言を自動的に切り替える(小粋空間)
Movable Type 4 正式リリース! インストールと雑感(亜細亜ノ蛾)

MTSetVarタグの行をすべて1行につなげて書き、さらにその後に改行せずにDOCTYPE宣言を書けば、一応はこの問題を解決することができます。
しかし、それだとテンプレートの可読性が下がります。

そこで、プラグインを使って、この問題を解決してみました。

1.ltrim修飾子

Movable Typeでは、テンプレートタグに修飾子(※注参照)を適用することで、タグの出力にさまざまなフィルターをかけることができます。

修飾子の中に、「ltrim」というものがあります。
これは、タグの出力の先頭から、ホワイトスペース(空白や改行など)を削除するものです。
たとえば、「<MTEntryBody ltrim="1">」とすると、エントリーの本文を出力する際に、先頭にあるホワイトスペースが削除されます。

このltrim修飾子を利用して、出力されたページの先頭からホワイトスペースを削除するというのが、ここで紹介する方法です。

※注
Movable Type 4の英文のドキュメントによると、従来のグローバルフィルターのことを、MT4では「global modifier」と呼ぶようです。
日本語では「修飾子」になるものと思われます。

2.ApplyModifierプラグインのインストール

ページ全体に対して修飾子を適用するために、「ApplyModifier」というプラグインを作りました(MT4専用です)。
以下からダウンロードすることができます。

ApplyModifier_1_00.zip

プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。

このプラグインは、<MTApplyModifier>と</MTApplyModifier>で囲まれた部分をそのまま出力する働きをします。
「そのまま出力するのなら無意味なのでは?」と思われるかも知れませんが、そうではありません。
このタグでは修飾子を使うことができます。
タグで囲った範囲すべてに修飾子を適用して出力するのが、このプラグインの役割です。

メインページやアーカイブテンプレートをこのタグで囲み、「ltrim="1"」の修飾子を使えば(以下参照)、ページの先頭の改行を削除することができることになります。

<MTApplyModifier ltrim="1">
メインページやアーカイブテンプレートの内容
</MTApplyModifier>

なお、どこかで同じようなプラグインを見たことがありますが、どこで見たか失念してしまったのと、どうせならMT4用にしようということで、自分でプラグインを書きました。
また、このプラグインは、MT標準のPHPのダイナミックパブリッシングにも対応させました(実質1行でできたので(笑))。

3.MTApplyModifierプラグインの他の利用法

MTApplyModifierプラグインは、使い方次第でいろいろな応用ができます。

たとえば、「テンプレート上では可読性を上げるために改行を入れたいが、改行があるとレイアウトが崩れることがあるので、出力されるページでは改行を削除したい」ということも、よくあると思います。
このようなときには、改行を入れたくない部分全体をMTApplyModifierタグで囲み、「ltrim="1"」と「strip_linefeeds="1"」の修飾子をつけると良いです(以下参照)。

<MTApplyModifier ltrim="1" strip_linefeeds="1">
改行を削除したい部分
</MTApplyModifier>

トラックバック(4件)

このブログ記事を参照しているブログ一覧: ページ先頭の改行を削除する

このブログ記事に対するトラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/1004.

» MT4.0、php化に成功!(猫派の読書空間)からのトラックバック

いやー、もう長い道のりでした。できてみれば、何のことはない、一行挿入+plugi... 続きを読む

» プラグインの導入(1)(fakelife -kalze's blog-)からのトラックバック

スタイルシートのカスタマイズをしてみた(1)に続いて、プラグインの導入もしてみま... 続きを読む

» 改行を削除する MT Plugin - ApplyModifier(SCREAMO)からのトラックバック

Movable Type 4では、各ページのソースの頭に、数行の改行が入ってしまうのは有名な話。それは、テンプレートに変数を定義しているソースが入ってい... 続きを読む

» MT4:4.01正式版が出る(ストレンジャー)からのトラックバック

Movable Type 4のバージョン4.01正式版が出ました。課題のポップア... 続きを読む

コメント(スレッド1件,コメント4件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

プラグインについてご質問をされる方は、ご自分のBlogのURLを必ず入力してください。
また、プラグインの開発やサポートを継続的に行えるようにするために、ドネーション(寄付)をしていただけると幸いです。
金銭的寄付だけでなく、精神的寄付も歓迎します。
ドネーションのページはこちら

No.1 asiamoth Author Profile Page: (無題)

トラックバック、ありがとうございます。
これ、いいですね。MT の標準機能で入れておいて欲しいくらいです。

ところで文中にある「同じようなプラグイン」というのは、これじゃないでしょうか? こちらは、問答無用で空白を削除します(オプションによる)。

MTOptimizeHTML
http://www.nonplus.net/software/mt/MTOptimizeHTML.htm

No.2  Author Profile Page: (無題)

>asiamothさん
こんにちは。

何もしないタグだけに、ソースコードも短いので、ぜひMT本体に入れてほしいものです。

なお、「同じようなプラグイン」というのは、ApplyModifierプラグインと同じく、「ブロックの中身をそのまま出力する」という動作をするもののことです。

No.3 あんちもん2 Author Profile Page: (無題)

> なお、どこかで同じようなプラグインを見たことがありますが、どこで見たか失念してしまったのと、

拙作の「MTSpan」のことだったらうれしいな。とか。
http://www.antimon2.atnifty.com/2006/06/mtspan.html 参照)

No.4  Author Profile Page: (無題)

>あんちもん2さん
こんにちは。

残念ながら、そちらのプラグインではありません。
海外のサイトで見た記憶があります。

同じことを考える人は何人もいるということでしょうか(笑)。

コメントする

管理者のみにコメントを送信したい場合は、「コメントを秘密にする」のチェックをオンにしてコメントを送信するか、メールフォームからメールをお送りください。

ブログ全体の感想など、この記事に直接に関係しないコメントは、ゲストブックにお気軽に投稿してください。


アーカイブ

ブログパーツ

ステータス