Movable Type で画像挿入時の form 要素について
Movable Type で画像挿入時の form 要素について、下記のエントリーを拝見して「なるほど!」と思いましたので、ご紹介させて頂きます。
MT4のブログ記事作成で画像を挿入し、テキストエリアを「リッチテキスト」以外で参照すると(あるいは最初から「リッチテキスト」以外で編集すると)画像表示用の img 要素が form 要素で括られます。
<form class="mt-enclosure mt-enclosure-image" mt:asset-id="5"><img class="mt-image-left" style="FLOAT: left; MARGIN: 0px 20px 20px 0px" height="426" alt="tea.jpg" src="http://your-domain/images/hoge.jpg" width="640" /></form>
これは MTEntryAssets タグを有効にするための裏情報になるらしいです(詳細は元記事をご覧ください)。
関連で下記の記事もありました。
この処理が行われることで、ブログ記事で挿入した画像は、MTEntryAssets タグの対象となり、ファイルアップロード機能で、アップロードしただけの画像は(当たり前ですが)MTEntryAssets タグの対象にならないということです。
上記以外の情報として、ソースコードを眺めてみると、lib/MT/Util.pm
に asset_cleanup
というサブルーチンがありました。
sub asset_cleanup {
my ($str) = @_;
$str =~ s/
<(?:[Ff][Oo][Rr][Mm]|[Ss][Pp][Aa][Nn])
([^>]*?)
\s
mt:asset-id="\d+"
([^>]+?>)(.*?)
<\/(?:[Ff][Oo][Rr][Mm]|[Ss][Pp][Aa][Nn])>
/
my $attr = $1 . $2;
my $inner = $3;
$attr =~ s!\s[Cc][Oo][Nn][Tt][Ee][Nn][Tt][Ee][Dd][Ii][Tt][Aa][Bb][Ll][Ee]=(['"][^'"]*?['"]|[Ff][Aa][Ll][Ss][Ee])!!;
'<span' . $attr . $inner . '<\/span>'
/gsex;
return $str;
}
このサブルーチンは、lib/MT/Template/ContextHandlers.pm
内で、MTEntryBody タグあるいは MTEntryMore タグの処理の最後で、mt:asset-id="AssetID"
の文字列がある場合に起動されます。
sub _hdlr_entry_body {
:
(中略)
:
# Strip the mt:asset-id attribute from any span tags...
if ($text =~ m/\smt:asset-id="\d+"/) {
$text = asset_cleanup($text);
}
return $text;
}
ということで、勉強になりました。ありがとうございました。
何故 form タグ?というのが知りたいところです。
- ブログ記事ページでその記事以外のブログ記事一覧を表示する方法
- MTEntriesタグをテンプレートで複数使う時に記事を重複させない方法
- Movable Type5.2のTinyMCEを5.1のボタンに戻す方法
- Movable Typeで製品情報のテーブルを作る
- Movable Typeのブログ記事ページのファイル名に日別の通番を振る
- 予定日を過ぎたブログ記事を「最近のブログ記事」に表示しない
- mt-csv2customfields v0.03
- 複数ブログのブログ記事を時間順に1件ずつ表示する
- Movable Type のブログ記事にフラグメント識別子(ページ内リンク)を設定する
- 特定のカテゴリーに属するブログ記事一覧を表示する(改)
- Movable Type 4 でカテゴリー別にブログ記事ページのデザインを切り替える方法(その2)
- Movable Type 4 でカテゴリー別にブログ記事ページのデザインを切り替える方法(その1)
- ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版・改)
- ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版)
- 概要と本文を切り替える(Movable Type 4・デフォルトテンプレート版)
こんにちは。
記事紹介して下さってありがとうございました。
このformタグ、意味が分からずに削除してしまう人も多いような気がしたので(自分もやってたし)、MTEntryAssets タグのために必要なんだということが少しでも多くの人に伝われば嬉しいです。
>TAEKOさん
こんにちは。
コメントありがとうございます。
仰る通り、一人でも多くの方に伝わることを期待しています。
私もTAEKOさんの記事を拝見するまで???でした(笑)。