2004年05月06日

「エントリー書き込みでWikiやはてなダイアリーのような書式で書けるようにする。」MT導入と改造

引用や箇条書を簡単に書けるようにしたい。 とりあえずは引用からやってみた。 行頭に「>>」があると、次ぎに行頭に「<<」があるまでは引用とした。 MTはリビルドするときにこのブロックを<blockquote class=quote>と</blockquote>で囲む。 データベースにはフォーマット前のデータが格納される。 また、<や>はいちいちエスケープするのがめんどうなので、自動で&amp;lt;と&amp;gt;になるようにした。 この機能はconvert linebreak時のみ有効にすべきなんだろうが、とりあえずは保留。 ただし例外があって、<a>と<img>、<b>、<u>、<i>, <br>はそのまま残すようにした。つまり、これらのタグに関しては普通のHTMLの表示になるということ。

いじったのは、lib\MT\Template\Context.pmで、<$MTEntryBody$>と<$MTEntryMore$>の 展開時にフォーマットが実行される。フォーマット処理の本体は、新たに作った lib\MT\Yun.pmモジュールで、ここにあるformatlikehatena関数が呼ばれると引数の 文字列がフォーマットの対象にになる。処理自体は非常にタコで安直なつくりなので、 いずれは改良されるべきだろう。

本来ならMT::add_text_filtersで実装すべきなのだとは思うが、よくわからなかった。

いずれははてなダイアリーやWikiWikiのようにしたい。Wikiならあるじゃないか、というのは、プログラミングの楽しみがなくなるので不問にする。

追記:

Wikiと連動。Wikiと同じようにキーワードを[ [と] ]で囲むとhttp://www.mediaware.jp/wiki/下の該当するWikiページに行く。 こんな具合い⇒[[MovableType]]

追記その2: YukiWikiのtext_to_htmlを改造してテキストフィルターとして組み込んでみた。 よって上記の追記部分は無効。 改造した新しいフォーマットルールについてはWikiを参照のこと(フォーマットルール)。 上記の[ [ ] ]は[と]で囲んで、wiki:を前につけるように変更。 こんな具合い⇒フォーマッティングルール。 ただしこれには注意が必要で、囲んだフレーズがWikiNameだと、ハイパーリンクへの展開が二重に行われてしまうというバグがあってヘンな表示になってしまう。当面は日本語のみの対応ということになる。

この記事のトラックバック用 Ping URL: http://www.mediaware.jp/blog/mt-tb.cgi/4
「エントリー書き込みでWikiやはてなダイアリーのような書式で書けるようにする。」へのコメント  コメントを書く
「エントリー書き込みでWikiやはてなダイアリーのような書式で書けるようにする。」へのトラックバック
コメントを書き込む









メールアドレスを記憶する?


この記事の評価
悪い あんまり 普通 まあまあ 良い





@@@@