MTで画像アップロード時に付く余計な記述を排除

Movable Typeはベタ打ちテキストを自動的に成形してくれるような親切設計になっているにも関わらず、テキストフォーマットは「なし」で私は使用している。画像中心の構成でソースが少なくて労力もそう要らないし、あれこれ細工するのに便利なのだ。

通常

というわけで、画像アップロードを多用しているわけだが――

画像スタイル

位置指定は要らない、と私が言っているのに、どうしてclassとかstyleとか付けてくれちゃうわけ? styleの中身なんて空じゃないか。だったら、styleという文字さえ要らないんだよ。

画像スタイル

ちなみに、位置「なし」を選択した場合のclass名は「mt-image-none」、左は「mt-image-left」、中央は「mt-image-center」、右は「mt-image-right」だが、付属のcssファイルにそれらclass名の記述はない。classだけ自動的に付けておくので、自分でcssに書き足して自由にデザインしてね、というスタンスらしい。例えば、後に画像を枠線を付けたりしたくなった時に役立つ。

尚、右寄せだと「class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" 」と出力される。styleの内容を最初からcssに書いておいてくれれば、ソースが無駄に長くならずすっきりすると思うんだけど。

システムファイルに記述追加

これを消すプラグインは見つからなかったものの、MTのシステムファイルで弄るべき箇所を教えてくれるページを発見。素人なのでシステムに関わるファイルは出来るだけ改竄したくないのだが、この余計な記述と共にストレスを溜めておくのも嫌なので。

記事のMTバージョンは古く、現行バージョン(6.3.3)では lib/MT/Asset/Image.pm ファイルの357行目と359行目に「位置指定なし」の場合で出力されるclassやstyleが記述されており、それぞれの行頭に「#」を付ける。

画像スタイル

結果。

画像スタイル

更に個人的改竄

しかし、私はimgにはスラッシュ「/」で閉じない記法にしている。

画像スタイル

412行目、閉じタグ「>」前の、最後の空白とスラッシュ「 /」を排除しただけでは、「>」前にまだ空白が残ってしまう。

8271.gif

問題の行には「%s」が四つ並んでおり、三番目はwidthとheight、四番目がclassとstyleっぽい。レスポンシブ対応を考えると私は右寄せや左寄せのclass指定すら使う予定がない(必要になったらタグを直接入力するつもり)し、その空白がファイル内ソースの何処と関係しているのか見当付かなかったので、最後の「%s」とその前後の空白とスラッシュもばっさり排除してみた。

<img alt="%s" src="%s" %s>

画像スタイル

そうそう、私はこうしたかったのよ。というわけで、以下がファイルの最終形態。

画像スタイル

こうするのなら、前述の「#」追記は不要。あと、位置「なし」ならば良いが「右」などを使いたい人は、この改竄版は真似しないで下さい。

ホントは「img」の後は「src」で、「alt」は最後に来るのが好みなんだけどね。サイト全体で統一しておきたいので、そこは今更もういい。ただ、これらのソースの前後を見ると、指定した条件によって <img src="~" ~ alt="" /> という順で出力されるようになっていたりで、一つのファイル内でもバラバラだったり。