お知らせ
2008年7月2日
拙著新刊の「ブログ簡単パワーアップ Movable Type4 スーパーカスタマイズテクニック」が発売されました。
Movable Type 4.2のさまざまなカスタマイズ方法を解説しています。
Movable Typeユーザーの皆様にぜひお勧めです。
なお、Movable Type 4.1には対応していませんのでご注意ください。
他にも多数書籍を執筆しています。
こちらもぜひご覧ください。
「改行を変換する」を改良するプラグイン
Movable Typeでは、エントリーの本文/追記の中の改行を自動的に変換する機能があります。変換は以下のように行われます。
- 1.本文/追記の文章を空行ごとに区切る
- 2.区切ったそれぞれの部分に、ブロック要素(divやtableなど)が含まれる場合は、その部分をそのまま出力する
- 3.2.以外の部分では、改行をbrタグに置換し、また部分の前後をpタグで囲む
普通に文章を入力するだけなら、これでほぼ問題ありません。
しかし、以下のようなときに問題があります。
- blockquote要素では、内部の改行が自動変換されないので、手動でbrタグを入れる必要がある
- 要素の中に空行があるとそこで区切られてしまい、思わぬ変換をされてしまう
そこで、より便利な改行変換を行うプラグインを作りました。
1.プラグインのダウンロードとインストール
プラグインは以下からダウンロードすることができます。
プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。
リンクをクリックしてファイルをダウンロードし、「ModTextFilter.pl」という名前をつけて保存してください。
そして、そのファイルをMovable Typeの「plugins」ディレクトリにアップロードしてください。
2.プラグインのフィルターを使う
このプラグインをインストールすると、エントリーの編集画面の「テキストフォーマット」の欄に「改良テキストフィルター」という選択肢が追加されます。
それを選んでエントリーを保存すると、このプラグインを使って、エントリーの本文と追記を変換するようになります。
3.フィルターの動作
このフィルターは、以下のように動作します。
(a)HTMLエンティティへの変換
文章の中に<enchtml>~</enchtml>で囲まれる部分がある場合は、その部分をHTMLエンコードします(「<」を「<」に変換するなど)。
また、「<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で動作を確認しています。
前後の記事
関連するエントリー(1件)
- Google Maps導入支援ページ(その3・Movable Typeのエントリーに地図を貼り付ける)(2007年02月28日 08:41)
トラックバック(23件)
このブログ記事を参照しているブログ一覧: 「改行を変換する」を改良するプラグイン
このブログ記事に対するトラックバック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... 続きを読む
The blog of H.Fujimotoの壱さん作「「改行を変換する」を改... 続きを読む
Movable Typeでエントリーを各場合、他のブログなどの引用にblockq... 続きを読む
以前改行の変更っていうエントリーで、 <textarea>タグ内に改行が反映されて鬱陶しいのでソースをいじくって対応しましたが、 その後非常に... 続きを読む
このエントリーで言っているように、「改行を変換する」は単純に改行コードを<br... 続きを読む
MTの自動改行変換を補ってくれ、"<>&などの特殊文字まで変換してくれる... 続きを読む
MTって自動で改行とかしてくれるはずなのに、たまに変な改行仕様(例えば引用内で... 続きを読む
おはようございま~す、風邪が相変わらず酷い管理人の七瀬彩で... 続きを読む
プラグイン名 : ModTextFilter.pl 働き : エントリー投稿時... 続きを読む
実はMT3.3β1が出て割とすぐバージョンアップを行ったんだけど、BigPAPIを使ったプラグインが使えなくなるということで、BigPAPIを使った投稿画... 続きを読む
「改行を変換する」を改良するプラグイン preタグ中に空行が入るとpタグが自動... 続きを読む
vimcolorプラグインで、ソースコードを貼り付けると、<pre>... 続きを読む
Movabletypeには「改行を変換する」という機能があり、brタグを挿入しなくても自動的に改行されてとても便利なのですが、preタグの... 続きを読む
作りますた。 ・hirosikitextfilterとは MovableType 3.2以上用のプラグインです。使用中MTのplugins/ディレクト... 続きを読む
< を &lt;に置き換える手間な作業を簡素化する。 ... 続きを読む
Movable Typeのプラグインやカスタマイズで、お世話になっている Th... 続きを読む


コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
こんにちは。
希望していた変換ができそうです。
早速利用させていただきます。
ありがとうございました。
壱さん、こんばんわ。
またまたお世話になっております。
ワタシには少々難しいので、意味がわかってないところがあるんですが、今まではテキストエリアの中に空行を入れるとpタグが入ってしまっていたんです。
それがこのプラグインのおかげで出なくなりました。
ありがとうございました。
こんにちは。
これ、いいですね。利用させていただきます。
いつもありがとうございます。
こんにちわ。
このプラグインを使わせていただいてます。ありがとうございます。
投稿記事画面で
<textarea>
テスト
テスト2
</textarea>
のように書いているのですが、
出力は
テストテスト2
のように改行されず困ってます。
lib/MT/Util.pmもデフォルトのままです。
どのようにしたら内部の改行がそのまま出力されるようになるのでしょうか?
<noconv>タグも<convbr>タグも試してみましたが、駄目でした。
他の方はうまくいっているようですし、私の所だけかもしれませんが、どうかご教授下さい。
よろしくお願いします。
>conducさん
こんにちは。
そちらのBlogのソースを拝見しましたが、エントリー内の改行がすべて削除されています。
MTEntryBodyタグに、改行を削除するようなグローバルフィルターをつけていらっしゃるということはないでしょうか。
テキストフィルタのプラグインは、グローバルフィルターより先に動作します。
グローバルフィルターが改行を削除してしまうと、textareaタグ内の改行も削除されてしまいます。
もし、上記のようなことをなさっていないとすると、原因は不明です。
こんばんわ。
確かにMTEntryBodyタグにM's folderさん作成のMT ルビ付きテキスト作成支援フィルタを付けておりました。
これを外しましたところ、改良テキストフィルターが正常に作動しました。ありがとうございます。
ただ、このルビ付きテキスト作成支援フィルタも重宝してまして、どうにか併用できないものかと思っているのですが、無理でしょうか?
>conducさん
こんにちは。
MT ルビ付きテキスト作成支援フィルタのソースを書き換えて、改行を削除しないようにしてみました。
以下のページに接続し、ソースをコピーしてメモ帳等に貼り付け、「mt-ruby.pl」のファイル名で保存して、既存のプラグインと差し替えてください。
mt-ruby.txt
これでうまくいくと思います。
壱さんこんにちわ。
本当にありがとうございます。
無事併用できるようになりました。
これからもよろしくお願いいたします。
はじめまして。

小粋空間さんのところからきました。
以前からHTMLタグの変換に悩んでいたのですが、ここでようやく悩み解消となりました。
助かりました~
いろいろプラグインがありますので、また使わせていただくことになるかと思いますのでよろしくお願いします。
トラバとBlogPeoPleに登録させてもらいました。
ありがとうございました
はじめまして。
ModTextFilter使わせて頂いてます。
このプラグインすごく便利ですね。
エントリー中のタグの表示はいろいろ面倒だったので非常に助かりました。
ありがとうございました。
壱さん、こんにちは。こちらでははじめまして。
エンコードボタンをMT3.2でどうするか検討していて
こちらのエントリーに辿り着きました。
丁度エントリー内の改行やタグについてカスタマイズをしたところでしたが
早速導入させていただくことにいたしました。
これからも色々なプラグインを使わせていただこうと思います。
素晴らしいプラグインをどうもありがとうございました。
こんにちは
プラグインを利用したいのですが
こんなエラーが出てしまって、困っています
理由が何か分かりますでしょうか?
よろしくお願いします
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.
>ykさん
こんにちは。
プラグインが正しくダウンロードできていないのではないかと思います。
もう一度、ダウンロードからやり直してみてください。
始めまして。
WEBデザインストックを運営している
buntaと申します。
The blog of H.Fujimotoで公開されているプラグイン
を色々と使わせていただいています。
いつもありがとうございます。
今回「改行を変換する」を改良するプラグインを非常に便利な
プラグインとして記事でご紹介させていただき、トラックバック
にも登録させていただきました。
色々とお世話になると思いますので、これからもよろしくお願い
します