MovableType のイメージ回り込み改造

こちらの記事を参考にしてイメージ回り込みがMT3.11でも可能になるようパッチを当ててみました。

  • tmpl/cms/upload_complete.tmpl

- プルダウンメニュー部分

プルダウンメニュー部分135行付近にある、 

<p>
<label><input type="checkbox" name="constrain" value="1" checked="checked"> <MT_TRANS phrase="Constrain proportions">
</p>

の下に

<p> Image floating:<select name="ifloat" class="menu" >
<option value="left" selected>left
<option value="right" >right
<option value="none">none
</select>
</p>

を追加
- ボタンに引数追加

 145行目付近にある

<div>
<TMPL_IF NAME=IS_IMAGE>
<input type="button" onclick="doClick(this.form, 'popup=1&amp;width=<TMPL_VAR NAME=WIDTH>&amp;height=<TMPL_VAR NAME=HEIGHT>&amp;image_type=<TMPL_VAR NAME=IMAGE_TYPE>')" value="<MT_TRANS phrase="Popup Image">" />
<input type="button" onclick="doClick(this.form, 'include=1&width=<TMPL_VAR NAME=WIDTH>&height=<TMPL_VAR NAME=HEIGHT>&image_type=<TMPL_VAR NAME=IMAGE_TYPE>')" value="<MT_TRANS phrase="Embedded Image">" />
<TMPL_ELSE>
<input type="button" onclick="doClick(this.form, 'link=1')" value="<MT_TRANS phrase="Link">" />
</TMPL_IF>
</div>

<div>
<TMPL_IF NAME=IS_IMAGE>
<input type="button" onclick="doClick(this.form, 'imgfloat='+this.form.ifloat.value+'&popup=1&amp;width=<TMPL_VAR NAME=WIDTH>&amp;height=<TMPL_VAR NAME=HEIGHT>&amp;image_type=<TMPL_VAR NAME=IMAGE_TYPE>')" value="<MT_TRANS phrase="Popup Image">" />
<input type="button" onclick="doClick(this.form, 'imgfloat='+this.form.ifloat.value+'&include=1&width=<TMPL_VAR NAME=WIDTH>&height=<TMPL_VAR NAME=HEIGHT>&image_type=<TMPL_VAR NAME=IMAGE_TYPE>')" value="<MT_TRANS phrase="Embedded Image">" />
<TMPL_ELSE>
<input type="button" onclick="doClick(this.form, 'link=1')" value="<MT_TRANS phrase="Link">" />
</TMPL_IF>
</div>

と、doClick関数の第2引数の頭にimgfloagとthis.form.ifloat.valueを追加する diffの結果です。

- diff

136a137,142
> <p> Image floating:<select name="ifloat" class="menu" >
> <option value="left" selected>left
> <option value="right" >right
> <option value="none">none
> </select>
> </p>
145,146c151,152
< <input type="button" onclick="doClick(this.form, 'popup=1&amp;width=<TMPL_VAR NAME=WIDTH>&amp;height=<TMPL_VAR NAME=HEIGHT>&amp;image_type=<TMPL_VAR NAME=IMAGE_TYPE>')" value="<MT_TRANS phrase="Popup Image">" />
< <input type="button" onclick="doClick(this.form, 'include=1&width=<TMPL_VAR NAME=WIDTH>&height=<TMPL_VAR NAME=HEIGHT>&image_type=<TMPL_VAR NAME=IMAGE_TYPE>')" value="<MT_TRANS phrase="Embedded Image">" />
---
> <input type="button" onclick="doClick(this.form, 'imgfloat='+this.form.ifloat.value+'&popup=1&amp;width=<TMPL_VAR NAME=WIDTH>&amp;height=<TMPL_VAR NAME=HEIGHT>&amp;image_type=<TMPL_VAR NAME=IMAGE_TYPE>')" value="<MT_TRANS phrase="Popup Image">" />
> <input type="button" onclick="doClick(this.form, 'imgfloat='+this.form.ifloat.value+'&include=1&width=<TMPL_VAR NAME=WIDTH>&height=<TMPL_VAR NAME=HEIGHT>&image_type=<TMPL_VAR NAME=IMAGE_TYPE>')" value="<MT_TRANS phrase="Embedded Image">" />
  • lib/MT/App/CMS.pm

 このファイルはかわってなかったです。しかし寿庵さんの変更前の記述と変更後の記述が同一なのでちょっと気をつけないと行けません。
- classを付ける

1889行あたりの下記のコードの

if ($q->param('popup')) {
require MT::Template;
if (my $tmpl = MT::Template->load({ blog_id => $blog_id,
type => 'popup_image' })) {
(my $base = $q->param('fname')) =~ s!\.[^.]*$!!;
if ($base =~ m!\.\.|\0|\|!) {
return $app->error($app->translate(

前に

my $imgclass;
if ($q->param('imgfloat') eq 'left') {
$imgclass = " class='l' ";
}elsif ($q->param('imgfloat') eq 'right') {
$imgclass = " class='r' ";
}else {
$imgclass = '';
}

を追加。

- HTMLコード追加

1931行目あたりのこのあたり

my $link = $thumb ? qq(<img src="$thumb" width="$thumb_width" height="$thumb_height" border="0" />) : "View image";
return <<HTML;
<a href="$url" onclick="window.open('$url','popup','width=$width,height=$height,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">$link</a>
HTML
} elsif ($q->param('include')) {
(my $fname = $url) =~ s!^.*/!!;
if ($thumb) {
return <<HTML;
<a href="$url"><img alt="$fname" src="$thumb" width="$thumb_width" height="$thumb_height" /></a>
HTML
} else {
return <<HTML;

の各 img タグ内に $imgclass を追記する。

my $link = $thumb ? qq(<img $imgclass src="$thumb" width="$thumb_width" height="$thumb_height" border="0" />) : "View image";
return <<HTML;
<a href="$url" onclick="window.open('$url','popup','width=$width,height=$height,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">$link</a>
HTML
} elsif ($q->param('include')) {
(my $fname = $url) =~ s!^.*/!!;
if ($thumb) {
return <<HTML;
<a href="$url"><img $imgclass alt="$fname" src="$thumb" width="$thumb_width" height="$thumb_height" /></a>
HTML
} else {
return <<HTML;
<img alt="$fname" $imgclass src="$url" width="$width" height="$height" />
HTML
}
} elsif ($q->param('link')) {
return <<HTML;

- diff

1889a1890,1898
> my $imgclass;
> if ($q->param('imgfloat') eq 'left') {
> $imgclass = " class='l' ";
> }elsif ($q->param('imgfloat') eq 'right') {
> $imgclass = " class='r' ";
> }else {
> $imgclass = '';
> }
>
1931c1940
< my $link = $thumb ? qq(<img src="$thumb" width="$thumb_width" height="$thumb_height" border="0" />) : "View image";
---
> my $link = $thumb ? qq(<img $imgclass src="$thumb" width="$thumb_width" height="$thumb_height" border="0" />) : "View image";
1939c1948
< <a href="$url"><img alt="$fname" src="$thumb" width="$thumb_width" height="$thumb_height" /></a>
---
> <a href="$url"><img $imgclass alt="$fname" src="$thumb" width="$thumb_width" height="$thumb_height" /></a>
1943c1952
< <img alt="$fname" src="$url" width="$width" height="$height" />
---
> <img alt="$fname" $imgclass src="$url" width="$width" height="$height" />
  • スタイルシート
img.r {
float: right;
border: none;
margin-right:4px;
margin-top:4px;
vertical-align:top;
}
img.l {
float: left;
border: none;
margin-right:4px;
margin-top:4px;
vertical-align:top;
}

トラックバック(14)

トラックバックURL: http://www.boarderz.com/~akashi/MT/mt-tb.cgi/5

Juanlogさんのところに紹介されていた「MovableType 画像回り込み改造」という、画像の回り込みを「右」「左」「なし」とメニューで選択出来るようにな... 続きを読む

以前から、MTでは、画像の回り込みができないのが、気になっていました。 ちょっ... 続きを読む

Juanlog MovableType 画像回り込み改造にて紹介されている画像の... 続きを読む

ワタシの場合、画像をアップロードするときは、画像の回り込み(align="left")を指定することが多いので、面倒だなあ、と思っていたらこんな記事を発見! 例... 続きを読む

マジックとは関係ないんですが,MovableTypeのブログはデフォルトでは画... 続きを読む

ブログのプラットフォーム、MTのバージョンアップをしたので備忘録として記しておく。 ・サポートサイトからMT3.17ja... 続きを読む

Juanlogさんのところに紹介されていた「MovableType 画像回り込み改造」という、画像の回り込みを「右」「左」「なし」とメニューで選択出来るようにな... 続きを読む

ぽんたの肉球、にぎにぎしたーい! - テキストの回り込み処理 (2005年7月22日 20:59)

MovableTypeでアップロードした画像について、テキストの回り込み属性を付ける改造を行った。(対象はMovableType3.15-ja) また、テキスト... 続きを読む

View image あまり使い道は無いけど、 Akashi`s Weblogさ... 続きを読む

Worldx`s Pieces - きつす (2005年8月 6日 17:55)

View image HTML } elsif (CGI=HASH(0x87... 続きを読む

まま・・。、・、。 ... 続きを読む

わたしのヒトリゴト あさきぬ工房 - テキストの回りこ込み (2005年8月17日 14:49)

写真の横にテキストを回り込ませる改造を行いました。 参考にしたのは、ぽんたの肉球... 続きを読む

画像横にテキストをつける場合、手打ちでテーブルタグ打つのが面倒になってきたので、 CMS.pmの改造とスタイルシートへの追加で自動回り込みを作った。 ただ... 続きを読む

Movable Typeの編集画面をすこし弄って使いやすくしてみました。 自分の... 続きを読む

コメント(7)

はじめまして。
(書きながら、ココ文字化けしてるけどだいじょうぶかな?)
質問です。
tmpl/cms/upload_complete.tmpl

lib/MT/App/CMS.pm
の、それぞれ「diff」てところがなんだか表示がおかしくて、コピーしようとしたときに困ってしまいました。
質問を受け付けておられるブログではないのかもしれませんが、回り込みをどうしてもやってみたくて来ました。
どうぞ宜しくお願いします。

コメントありがとうございます。
修正を加えたファイルをまとめたtar ballを
http://www.boarderz.com/~akashi/downloads/round.tgz
に置いておきました。

お楽しみ下さい。

ちなみに化けてましたかぁ?
手持ちの
Mac: Safari1.2.4/FireFox1.0
Win: xp FireFox1.0
では大丈夫だったんですが、どんなシステムで化けてましたか?教えてください。

あかしさん、初めまして ^^
TBを送らせていただきました。
画像の回り込み、ずっとやってみたかったので、非常にうれしいです ^^
ありがとうございました ^^

ちょっとファイル名を変更しました。
3.11-3.122用 パッチ http://www.boarderz.com/~akashi/downloads/floatingImage-3.11-122.tgz
3.15用パッチ
http://www.boarderz.com/~akashi/downloads/floatingImage-3.15.tgz
です。

これらの中には、イメージ回り込みパッチが当てられた下記2ファイルがおさめられています。
./MT/lib/MT/App/CMS.pm
./MT/tmpl/cms/upload_complete.tmpl

tar を展開すると旧ファイルを上書きしますのでご注意下さい。
また、問題が起こっても責任は持てませんのでご自分のリスクでご利用下さい。

あかしさん、お返事有難うございます。
すいません!文字化けだと思っていたの、どうやらそうじゃないみたいです。勘違いみたいです・・・。
ちょっとよくわからなくて、いただいたファイルを私のところにも入れてみました。
どうしてもわからないのが、上記にある「diffの結果です」というのはどういう意味がちんぷんかんぷんなんです~書き換えが必要な部分なんでしょうか?
申し訳ありません・・・ヨロシクお願いします。

こんにちは。
丁寧な説明で大変役に立ちました。
早速便利に使わせていただいています。
あとでトラックバックさせていただきますね。

一つ気になったことがあります。
-----------------------------------------
- HTMLコード追加
1931行目あたりのこのあたり
-----------------------------------------
で提示されている、「変更前」と「変更後」の範囲が違っているため、単純に「変更前」の文字列に「変更後」の文字列をコピペで上書きしてしまうと、閉じ括弧の数が足りなくてエラーを起し、MT.cgiが動かなくなってしまいます。(やっちゃいました)

変更前の範囲に、
-----------------------------------------

HTML
}
} elsif ($q->param('link')) {
return <<HTML;
-----------------------------------------
を追加した方がわかりやすいかと思います。

初めまして。
質問するような場ではないのかもしれないですが、
どうしても私の手には負えないので質問させていただきます(⊃д⊂)
画像回り込みを3.171でやろうと思い、
何度も挑戦しているのですが、
何故かファイルのアップロードをする所でエラーが出てしまいます・・・。
そしてエントリー投稿時の右上アイコン欄にファイルのアップデートアイコンが消えてしまっています・・・。

これは3.171ではできないのでしょうか?
もしどうにかなるようでしたら、お返事頂けたらと思います。
不躾に失礼しました(⊃д⊂)

コメントする

最近のブログ記事

白子合宿
スライドショーを埋め込めるでしょうか? …
検見川グランド
242D2933, originall…
Flickrからの記事のポスト
Camera Camera BLOGさん…

タグクラウド