うちのブログは Movable Type を利用しています。
で、一応携帯からも見れるようにと MT4i を導入してるんですが、
これを使うとブログ本文(エントリー)に画像が貼ってあると
そこが「<画像:sample.jpg>」とかいうふうにリンクになっちゃいます。
まぁ、このリンクをクリックした時に User-Agent を見てアクセスしてきた
携帯に適切な画像が表示される仕組みなのですが、できればリンクにせず
本文にそのまま表示させたい!
というわけでPerl初心者のオイラが見よう見まねで改造開始!
今回使用したのは、MT4i 3.0.7 です。
mt4i.cgi の750行目あたりの if ($imk == 2) に対して else の部分を
以下のように変更します。
<変更前>
$href = &make_href("image", 0, 0, $eid, 0); $text =~ s/<a[^>]*><img[^>]*src=\n*["']([^"'>]*)["'][^>]*alt=\n*["']([^"'>]*)["'][^>]*><\/a>/<<a href="$href&img=$1">画像:$2<\/a>>/ig; $text =~ s/<a[^>]*><img[^>]*alt=\n*["']([^"'>]*)["'][^>]*src=\n*["']([^"'>]*)["'][^>]*><\/a>/<<a href="$href&img=$2">画像:$1<\/a>>/ig; # imgタグのみの除去、ALTの表示、画像へのリンク $text =~ s/<img[^>]*src=\n*["']([^"'>]*)["'][^>]*alt=\n*["']([^"'>]*)["'][^>]*>/<<a href="$href&img=$1">画像:$2<\/a>>/ig; $text =~ s/<img[^>]*alt=\n*["']([^"'>]*)["'][^>]*src=\n*["']([^"'>]*)["'][^>]*>/<<a href="$href&img=$2">画像:$1<\/a>>/ig; # aタグを含めた除去、画像へのリンク $text =~ s/<a[^>]*><img[^>]*src=\n*["']([^"'>]*)["'][^>]*><\/a>/<<a href="$href&img=$1">画像<\/a>>/ig; # imgタグのみの除去、画像へのリンク $text =~ s/<img[^>]*src=\n*["']([^"'>]*)["'][^>]*>/<<a href="$href&img=$1">画像<\/a>>/ig; |
<変更後>
my $text_bak = $text; if ($text eq $text_bak) { $text =~ s/<a[^>]*><img[^>]*src=\n*["']([^"'>]*)["'][^>]*alt=\n*["']([^"'>]*)["'][^>]*><\/a>/<img src=".\/$cfg{MyName}?mode=img_cut&id=$blog_id&img=$1">/ig; $text =~ s/<a[^>]*><img[^>]*alt=\n*["']([^"'>]*)["'][^>]*src=\n*["']([^"'>]*)["'][^>]*><\/a>/<img src=".\/$cfg{MyName}?mode=img_cut&id=$blog_id&img=$2">/ig; } # imgタグのみの除去、ALTの表示、画像へのリンク if ($text eq $text_bak) { $text =~ s/<img[^>]*src=\n*["']([^"'>]*)["'][^>]*alt=\n*["']([^"'>]*)["'][^>]*>/<img src=".\/$cfg{MyName}?mode=img_cut&id=$blog_id&img=$1">/ig; $text =~ s/<img[^>]*alt=\n*["']([^"'>]*)["'][^>]*src=\n*["']([^"'>]*)["'][^>]*>/<img src=".\/$cfg{MyName}?mode=img_cut&id=$blog_id&img=$2">/ig; } # aタグを含めた除去、画像へのリンク if ($text eq $text_bak) { $text =~ s/<a[^>]*><img[^>]*src=\n*["']([^"'>]*)["'][^>]*><\/a>/<img src=".\/$cfg{MyName}?mode=img_cut&id=$blog_id&img=$1">/ig; } # imgタグのみの除去、画像へのリンク if ($text eq $text_bak) { $text =~ s/<img[^>]*src=\n*["']([^"'>]*)["'][^>]*>/<img src=".\/$cfg{MyName}?mode=img_cut&id=$blog_id&img=$1">/ig; } |
なぜif文で比較してるかというと・・・
正規表現処理を全部通すと<img>が変換されてうまく動きませんでした。
なので、一度変換したら他の変換処理は動かないようにしてます。
すみません、正規表現を全然理解してなかったので、こんな逃げ方を・・・m(__)m
しかも、これで本当にいいのかどうか確信はありません。<(`^´)>エッヘン。(爆)
一応、動作してるのでいっか(^^;)
ってことでしたm(__)m
コメントする