お知らせ

Movable Type 5実践テクニック2010年3月26日

Movable Type 5実践テクニック」が発売されました。
実際的なWebサイト製作事例を通して、テーマと複数ブログ活用を中心に、Movable Type 5の実践的な使いこなし方を解説しています。
Movable Typeでサイト制作をされている皆様はぜひお買い求めください。

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

「改行を変換する」を改良するプラグイン

| コメント(16) | トラックバック(25)

Movable Typeでは、エントリーの本文/追記の中の改行を自動的に変換する機能があります。変換は以下のように行われます。

  • 1.本文/追記の文章を空行ごとに区切る
  • 2.区切ったそれぞれの部分に、ブロック要素(divやtableなど)が含まれる場合は、その部分をそのまま出力する
  • 3.2.以外の部分では、改行をbrタグに置換し、また部分の前後をpタグで囲む

普通に文章を入力するだけなら、これでほぼ問題ありません。
しかし、以下のようなときに問題があります。

  • blockquote要素では、内部の改行が自動変換されないので、手動でbrタグを入れる必要がある
  • 要素の中に空行があるとそこで区切られてしまい、思わぬ変換をされてしまう

そこで、より便利な改行変換を行うプラグインを作りました。

1.プラグインのダウンロードとインストール

プラグインは以下からダウンロードすることができます。

プラグインのダウンロード

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

また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。

Movable Typeのプラグイン開発等のドキュメント「Movable Type Developer's Guide Volume 1」も販売しています。
ご自分でプラグインを作ってみたい方に、ぜひお勧めしたい一冊です。
詳細は特設ページをご覧ください。

リンクをクリックしてファイルをダウンロードし、「ModTextFilter.pl」という名前をつけて保存してください。
そして、そのファイルをMovable Typeの「plugins」ディレクトリにアップロードしてください。

2.プラグインのフィルターを使う

このプラグインをインストールすると、エントリーの編集画面の「テキストフォーマット」の欄に「改良テキストフィルター」という選択肢が追加されます。

改良型テキストフィルター

それを選んでエントリーを保存すると、このプラグインを使って、エントリーの本文と追記を変換するようになります。

3.フィルターの動作

このフィルターは、以下のように動作します。

(a)HTMLエンティティへの変換
文章の中に<enchtml>~</enchtml>で囲まれる部分がある場合は、その部分をHTMLエンコードします(「<」を「&lt;」に変換するなど)。
また、「<enchtml>」と「</enchtml>」自体はHTMLファイルには出力されません。
エントリーでHTMLのソースを公開したいときに、この機能を使うと便利です。

(b)改行をそのまま残す要素
以下の要素では、内部の改行はそのまま出力されるようになります。

pre textarea table ol dl ul menu dir

なお、要素の中に空行があっても、そこでは要素は分割されません。

(c)改行をbrタグに変換する要素
以下の要素では、内部の改行はbrタグに変換されます

blockquote div p h1 h2 h3 h4 h5 h6 form address

ただし、開始タグ直後の改行と、終了タグ直前の改行は、brタグに変換せず、そのまま出力します。
なお、要素の中に空行があっても、そこでは要素は分割されません。

(d)その他の部分
上記以外の部分は、空行ごとに分割され、内部の改行はbrタグに変換されます。
そして、部分の前後はpタグで囲まれます。

(e)要素の入れ子
(b)および(c)は、要素が入れ子になっているときは正しく動作しません。

例えば、div要素の中にpre要素を入れると、pre要素の部分でも改行がbrタグに置換されます。
また、div要素を入れ子にした場合、外側の<div>タグから内側の</div>タグまでが処理の対象になり、正しい変換になりません。

このような場合は、「<noconv>~</noconv>」および「<convbr>~</convbr>」という書き方を使って、改行の変換方法を部分的に明示することができます。
「<noconv>」と「</noconv>」で囲んだ部分は、改行がそのまま出力されます。また、「<noconv>」と「</noconv>」自体はHTMLファイルには出力されません。
一方、「<convbr>」と「</convbr>」で囲んだ部分は、改行がそのまま出力されます(ただし、<convbr>の直後と</convbr>の直前の改行は除く)。
また、「<noconv>」と「</noconv>」自体はHTMLファイルには出力されません。

例えば、エントリーに以下のように入力したとします。

<noconv>
<div>

<div class="float_left">
</noconv>
<convbr>
left1
left2
</convbr>
<noconv>
</div>

<div id="float_right">
</noconv>
<convbr>
right1
right2
</convbr>
<noconv>
</div>

<div style="clear : both;"></div>

</div>
</noconv>

これは以下のように変換されます。

<div>

<div class="float_left">
left1<br />
left2
</div>

<div id="float_right">
right1<br />
right2
</div>

<div style="clear : both;"></div>

</div>

4.MT3.2/3.3への対応

このプラグインは、Movable Type 3.17/3.2/3.3で動作を確認しています。

トラックバック(25)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/265.

普段の投稿では特に不便を感じていなかったのですが、引用すると改行が自動で反映されないのが不満でした。それを改良するプラグインをThe blog of H.Fuj... 続きを読む

(2)とか付けても、実は私は何もしていませんが; 「改行を変換する」を改良する... 続きを読む

The blog of H.Fujimotoサマのところで 面白いプラグインを見つけました。 MTエントリーの投稿画面... 続きを読む

The blog of H.Fujimoto さん : 「改行を変換する」を改良... 続きを読む

MT 3.2にアップグレードしたついでにプラグインもバージョンアップと整理をし... 続きを読む

HTMLタグなどをblogで表示する場合、そのまま表示させるとうまく出来ないか、... 続きを読む

HTMLタグなどをblogで表示する場合、そのまま表示させるとうまく出来ないか、... 続きを読む

「The blog of H.Fujimoto」様のところで、『ModText... 続きを読む

ネコの為に鈴は鳴る。 - After☆Taste Blog - エントリー内に記述したタグをエンコード (2005年11月17日 13:12)

The blog of H.Fujimotoの壱さん作「「改行を変換する」を改... 続きを読む

Movable Typeでエントリーを各場合、他のブログなどの引用にblockq... 続きを読む

以前改行の変更っていうエントリーで、 <textarea>タグ内に改行が反映されて鬱陶しいのでソースをいじくって対応しましたが、 その後非常に... 続きを読む

このエントリーで言っているように、「改行を変換する」は単純に改行コードを<br... 続きを読む

MTの自動改行変換を補ってくれ、"<>&などの特殊文字まで変換してくれる... 続きを読む

MTって自動で改行とかしてくれるはずなのに、たまに変な改行仕様(例えば引用内で... 続きを読む

■ Another Life - エバークエスト他最新情報 ■ - 改良テキストフィルターと Kanon と Ture と。 (2006年5月17日 05:07)

おはようございま~す、風邪が相変わらず酷い管理人の七瀬彩で... 続きを読む

プラグイン名 : ModTextFilter.pl 働き : エントリー投稿時... 続きを読む

実はMT3.3β1が出て割とすぐバージョンアップを行ったんだけど、BigPAPIを使ったプラグインが使えなくなるということで、BigPAPIを使った投稿画... 続きを読む

「改行を変換する」を改良するプラグイン preタグ中に空行が入るとpタグが自動... 続きを読む

vimcolorプラグインで、ソースコードを貼り付けると、<pre>... 続きを読む

Movabletypeには「改行を変換する」という機能があり、brタグを挿入しなくても自動的に改行されてとても便利なのですが、preタグの... 続きを読む

作りますた。 ・hirosikitextfilterとは MovableType 3.2以上用のプラグインです。使用中MTのplugins/ディレクト... 続きを読む

< を &lt;に置き換える手間な作業を簡素化する。 ... 続きを読む

WEBデザインストック | WEBデザイン・Movable Type等の備忘録 - エントリーにソースコードを表示でき、改行変換も便利にするプラグイン (2008年6月 6日 03:13)

Movable Typeのプラグインやカスタマイズで、お世話になっている Th... 続きを読む

Movable Typeの「改行を変換する」を改良するプラグインを発見。いい感じなので、沢山のサイトでレビューされてるようですが私的メモ。 続きを読む

テンプレートタグリファレンス グローバル・モディファイアリファレンス 今まででは、ちょっとした条件でテンプレートの内容を変えようとすると、プラグインに頼... 続きを読む

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

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

No.1 とーこ : (無題)

こんにちは。

希望していた変換ができそうです。
早速利用させていただきます。

ありがとうございました。

No.2 やむ : (無題)

壱さん、こんばんわ。
またまたお世話になっております。
ワタシには少々難しいので、意味がわかってないところがあるんですが、今まではテキストエリアの中に空行を入れるとpタグが入ってしまっていたんです。
それがこのプラグインのおかげで出なくなりました。
ありがとうございました。

No.3 さえら : (無題)

こんにちは。
これ、いいですね。利用させていただきます。
いつもありがとうございます。

No.4 conduc : (無題)

こんにちわ。
このプラグインを使わせていただいてます。ありがとうございます。

投稿記事画面で
<textarea>
テスト
テスト2
</textarea>
のように書いているのですが、
出力は

テストテスト2

のように改行されず困ってます。
lib/MT/Util.pmもデフォルトのままです。
どのようにしたら内部の改行がそのまま出力されるようになるのでしょうか?

<noconv>タグも<convbr>タグも試してみましたが、駄目でした。

他の方はうまくいっているようですし、私の所だけかもしれませんが、どうかご教授下さい。
よろしくお願いします。

No.5  : (無題)

>conducさん
こんにちは。

そちらのBlogのソースを拝見しましたが、エントリー内の改行がすべて削除されています。
MTEntryBodyタグに、改行を削除するようなグローバルフィルターをつけていらっしゃるということはないでしょうか。

テキストフィルタのプラグインは、グローバルフィルターより先に動作します。
グローバルフィルターが改行を削除してしまうと、textareaタグ内の改行も削除されてしまいます。

もし、上記のようなことをなさっていないとすると、原因は不明です。

No.6 conduc : (無題)

こんばんわ。

確かにMTEntryBodyタグにM's folderさん作成のMT ルビ付きテキスト作成支援フィルタを付けておりました。

これを外しましたところ、改良テキストフィルターが正常に作動しました。ありがとうございます。

ただ、このルビ付きテキスト作成支援フィルタも重宝してまして、どうにか併用できないものかと思っているのですが、無理でしょうか?

No.7  : (無題)

>conducさん
こんにちは。

MT ルビ付きテキスト作成支援フィルタのソースを書き換えて、改行を削除しないようにしてみました。
以下のページに接続し、ソースをコピーしてメモ帳等に貼り付け、「mt-ruby.pl」のファイル名で保存して、既存のプラグインと差し替えてください。

mt-ruby.txt

これでうまくいくと思います。

No.8 conduc : (無題)

壱さんこんにちわ。

本当にありがとうございます。
無事併用できるようになりました。

これからもよろしくお願いいたします。

No.9 し~ちゃん : (無題)

はじめまして。
小粋空間さんのところからきました。
以前からHTMLタグの変換に悩んでいたのですが、ここでようやく悩み解消となりました。
助かりました~ダブルハート
いろいろプラグインがありますので、また使わせていただくことになるかと思いますのでよろしくお願いします。
トラバとBlogPeoPleに登録させてもらいました。
ありがとうございました!

No.10 sin_d: : (無題)

はじめまして。

ModTextFilter使わせて頂いてます。
このプラグインすごく便利ですね。
エントリー中のタグの表示はいろいろ面倒だったので非常に助かりました。

ありがとうございました。

No.11 みっく : (無題)

壱さん、こんにちは。こちらでははじめまして。
エンコードボタンをMT3.2でどうするか検討していて
こちらのエントリーに辿り着きました。
丁度エントリー内の改行やタグについてカスタマイズをしたところでしたが
早速導入させていただくことにいたしました。
これからも色々なプラグインを使わせていただこうと思います。
素晴らしいプラグインをどうもありがとうございました。

No.12 yk : (無題)

こんにちは

プラグインを利用したいのですが
こんなエラーが出てしまって、困っています
理由が何か分かりますでしょうか?
よろしくお願いします

ModTextFilter.pl
プラグイン・エラー:
syntax error at /home/yk/www/mt/plugins/ModTextFilter.pl line 2, near "" syntax error at /home/ykym/www/mt/plugins/ModTextFilter.pl line 10, near "n" syntax error at /home/yk/www/mt/plugins/ModTextFilter.pl line 11, near "n" syntax error at /home/yk/www/mt/plugins/ModTextFilter.pl line 17, near "p" syntax error at /home/yk/www/mt/plugins/ModTextFilter.pl line 20, near "p" Compilation failed in require at lib/MT.pm line 619.

No.13  : (無題)

>ykさん
こんにちは。

プラグインが正しくダウンロードできていないのではないかと思います。
もう一度、ダウンロードからやり直してみてください。

No.14 bunta : (無題)

始めまして。
WEBデザインストックを運営している
buntaと申します。

The blog of H.Fujimotoで公開されているプラグイン
を色々と使わせていただいています。
いつもありがとうございます。

今回「改行を変換する」を改良するプラグインを非常に便利な
プラグインとして記事でご紹介させていただき、トラックバック
にも登録させていただきました。

色々とお世話になると思いますので、これからもよろしくお願い
します!

No.15 bzbell : MT4.2 だと「改良テキストフィルター」が文字化けしちゃう件

こんばんわ^^

ModTextFilter プラグインは以前から使わせて頂いてるのですが、MT4.2 では「設定」>「コメント」で選択するドロップダウンリストの文字列が化けてしまいます。

そこで ModTextFilter.pl 内の 29 行目のエンティティを「改良テキストフィルター」書き換えて UTF-8 で保存したら正しく表示されました。

これって MT4.2 の問題でしょうか汗
※特に動作には支障はありません。

以上、ご連絡までハート

No.16  : Re:MT4.2 だと「改良テキストフィルター」が文字化けしちゃう件

>bzbellさん
こんにちは。
ご指摘の件を改良したものを公開しました。

http://www.h-fj.com/blog/archives/2008/08/04-102123.php

コメントする