お知らせ

WordPressで学ぶPHPとMySQL2009年9月23日

WordPressで学ぶPHPとMySQL」を発売しました。
「WordPressをカスタマイズしたいけど、PHPやMySQLが分からなくて躓いている」という方のための、PHPとMySQLの入門書です。
WordPressでWeb製作をされている方などにお勧めです。
PDFによる販売で、当サイトでのみ購入できます(書店では購入できません)

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

画像を挿入したときにformタグがつく理由

| コメント(3) | トラックバック(5)

Movable Type 4では、画像等を「アイテム」として管理する機能があります。
アイテムをブログ記事に挿入すると、そのアイテムに応じたタグが自動的に入力されます。

ただ、画像をブログ記事に挿入すると、画像のimgタグがformタグで囲まれて挿入されます。
画像を挿入したことがある方は、「何でformタグが挿入されるんだ?」という印象を持ったのではないかと思います。
また、「formタグは邪魔だ」という意見も多いようです。

ただ、このformタグには意味があります。
今日はこの点について解説します。

1.ブログ記事とアイテムの関連を保存するため

Movable Type 4の新しいタグの中に、「MTEntryAssets」というタグがあります。
このタグは、ブログ記事に入っているアイテムの一覧を出力するものです。

このタグの処理を効率よく行うには、ブログ記事とアイテムの関連の情報を、どこかに保存しておくという方法が考えられます。
Movable Type 4には「MT::ObjectAsset」というクラスがあり、このクラスによってブログ記事等とアイテムとの関連付けが保存されるようになっています。

画像につけられたformタグは、この関連付けの保存の処理を行うために使われています。
ブログ記事を保存すると、その本文の中からformタグが検索され、その情報を利用して関連付けが保存されるようになっています。
したがって、画像からformタグを取ってしまうと、関連付けが保存されず、MTEntryAssetsタグが正しく動作しなくなってしまいます。

2.再構築時にformタグは置換される

また、ブログ記事を再構築すると、formタグはspanタグに置換されるようになっています。

ブログ記事に画像を入れた時点では、タグは以下のように入力されます。

<form mt:asset-id="アセットのID" class="mt-enclosure mt-enclosure-image">
<img alt="画像の代替文字列" src="画像のアドレス" width="画像の幅" height="画像の高さ" class="mt-image-xxx" style="float: xxx; margin: 0 20px 20px 0;"/>
</form>

一方、この部分を再構築すると、以下のようなタグに置き換わります。

<span class="mt-enclosure mt-enclosure-image">
<img alt="画像の代替文字列" src="画像のアドレス" width="画像の幅" height="画像の高さ" class="mt-image-xxx" style="float: xxx; margin: 0 20px 20px 0;"/>
</span>

上記のようなことから、画像を挿入したときのformタグは、ブログ記事から勝手に削除せずに、残しておくようにすることをお勧めします。

トラックバック(5)

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

Movable Type で画像挿入時の form 要素について、下記のエントリーを拝見して「なるほど!」と思いましたので、ご紹介させて頂きます。 Win... 続きを読む

MovableType4では エントリーに画像を挿入すると、画像のimgタグが下... 続きを読む

MT4でエントリーに画像を挿入する際に、配置する位置を選ぶことができるけど、右と... 続きを読む

MT4で画像をポン付けすると何故formタグで括られるの? 続きを読む

※念の為記述しておくと、これはMovableType4.1の話です。 mt標準の... 続きを読む

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

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

No.1 哲やん : (無題)

いつもお世話になっております。
formタグはLightbox2を使いたい一心でいろいろ調べた末に、いろいろな方からのご助言を頂き、何とか設置が可能になりました。
たしかにformタグは再構築されたブログ記事のソースを見るとspanに変わっていました。
他にも何か潜んでいそうな気がします。
今後も皆さんの解析を注視していきたいと思っています。

No.3 alba : 自分でつけたID番号ではアイテム表示されない

いつもありがとうございます。私もこのformタグには何か意味があると思って、はずさずにいました。そしてID番号は重複してはいけないんだろうと思って、別のブログにアップしてある画像を当該ブログで使う際に、画像URLをコピーして参照させ、formタグのID番号だけ勝手に自分でふりました。以前の通し番号の続きから、です。

そしたら、アイテムには表示されていません。このアイテムのウィジェットを使わないなら、formタグをはずしても問題はないでしょうか?あるいは、新規アップロード画像以外がアイテムに表示されなくても問題ないと自分で思うなら、このままにしていても構わないでしょうか。こんな風に勝手にID番号をふることは全く意味のないことでしょうか。後で致命的エラーにならなければいいと思っています。素人の質問で申し訳ありません。

No.4  : Re:自分でつけたID番号ではアイテム表示されない

>albaさん
こんにちは。

記事にも書いたように、formタグの「mt:asset-id="アセットのID"」の部分が、実際のアセット(アイテム)のIDと正しく対応していないと、MTEntryAssetsタグが正しく動作しません。
自分で適当なIDを振ると、MTEntryAssetsタグは動作しなくなりますし、データに不整合が生じます。

また、アイテムの情報はMTのデータベースに保存されていて、アイテムのウィジェットはその情報に基づいて出力されます。したがって、他所にある画像に勝手にIDを振っても、アイテムのウィジェットには出力されません。

コメントする