MT4iで本文(エントリー)と画像の両方を表示

| コメント(0) | トラックバック(1)

うちのブログは 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>/&lt;<a href="$href&amp;img=$1">画像:$2<\/a>&gt;/ig;
$text =~ s/<a[^>]*><img[^>]*alt=\n*["']([^"'>]*)["'][^>]*src=\n*["']([^"'>]*)["'][^>]*><\/a>/&lt;<a href="$href&amp;img=$2">画像:$1<\/a>&gt;/ig;

# imgタグのみの除去、ALTの表示、画像へのリンク
$text =~ s/<img[^>]*src=\n*["']([^"'>]*)["'][^>]*alt=\n*["']([^"'>]*)["'][^>]*>/&lt;<a href="$href&amp;img=$1">画像:$2<\/a>&gt;/ig;
$text =~ s/<img[^>]*alt=\n*["']([^"'>]*)["'][^>]*src=\n*["']([^"'>]*)["'][^>]*>/&lt;<a href="$href&amp;img=$2">画像:$1<\/a>&gt;/ig;

# aタグを含めた除去、画像へのリンク
$text =~ s/<a[^>]*><img[^>]*src=\n*["']([^"'>]*)["'][^>]*><\/a>/&lt;<a href="$href&amp;img=$1">画像<\/a>&gt;/ig;

# imgタグのみの除去、画像へのリンク
$text =~ s/<img[^>]*src=\n*["']([^"'>]*)["'][^>]*>/&lt;<a href="$href&amp;img=$1">画像<\/a>&gt;/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&amp;id=$blog_id&amp;img=$1">/ig;
    $text =~ s/<a[^>]*><img[^>]*alt=\n*["']([^"'>]*)["'][^>]*src=\n*["']([^"'>]*)["'][^>]*><\/a>/<img src=".\/$cfg{MyName}?mode=img_cut&amp;id=$blog_id&amp;img=$2">/ig;
}

# imgタグのみの除去、ALTの表示、画像へのリンク
if ($text eq $text_bak) {
    $text =~ s/<img[^>]*src=\n*["']([^"'>]*)["'][^>]*alt=\n*["']([^"'>]*)["'][^>]*>/<img src=".\/$cfg{MyName}?mode=img_cut&amp;id=$blog_id&amp;img=$1">/ig;
    $text =~ s/<img[^>]*alt=\n*["']([^"'>]*)["'][^>]*src=\n*["']([^"'>]*)["'][^>]*>/<img src=".\/$cfg{MyName}?mode=img_cut&amp;id=$blog_id&amp;img=$2">/ig;
}

# aタグを含めた除去、画像へのリンク
if ($text eq $text_bak) {
    $text =~ s/<a[^>]*><img[^>]*src=\n*["']([^"'>]*)["'][^>]*><\/a>/<img src=".\/$cfg{MyName}?mode=img_cut&amp;id=$blog_id&amp;img=$1">/ig;
}

# imgタグのみの除去、画像へのリンク
if ($text eq $text_bak) {
    $text =~ s/<img[^>]*src=\n*["']([^"'>]*)["'][^>]*>/<img src=".\/$cfg{MyName}?mode=img_cut&amp;id=$blog_id&amp;img=$1">/ig;
}

なぜif文で比較してるかというと・・・

正規表現処理を全部通すと<img>が変換されてうまく動きませんでした。

なので、一度変換したら他の変換処理は動かないようにしてます。

すみません、正規表現を全然理解してなかったので、こんな逃げ方を・・・m(__)m

しかも、これで本当にいいのかどうか確信はありません。<(`^´)>エッヘン。(爆)

一応、動作してるのでいっか(^^;)

ってことでしたm(__)m

 

トラックバック(1)

トラックバックURL: http://blog.e-akky.net/cgi-bin/mt-tb.cgi/28

だいぶ以前に携帯サイトを開設しました^^という記事を書いたのはご存知だろうか?... 続きを読む

コメントする

このブログ記事について

このページは、アッキーが2008年9月12日 10:02に書いたブログ記事です。

ひとつ前のブログ記事は「集中豪雨だった(x_x)」です。

次のブログ記事は「いい休日」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ