Serene Bach on the Prairie

大草原の小さな家。


ENTRIES

Amazon のリンクをモバイル対応にする

変更履歴

2006-10-23T16:40:24+09:00
AWS から提供されるリンク表記の変更に伴い、変換処理を変更しました。少々どんくさいやり方をしているので、もっといいコードがあったらご教示頂けると嬉しいです…。

半年ほど前になりますが、Amazon アソシエイトプログラムで Amazon のモバイルストアにジャンプできるアフィリエイトリンクの提供を始めました。Serene Bach の『オススメ』メニューで利用しているアフィリエイトプログラムは Amazon ですので、普通に考えればオススメ商品にモバイル用リンクも利用できる、ということになります。が、モバイル用リンクは通常のリンクとアドレスが全く異なるので、PC 用に書いたアフィリエイトリンク付きの記事を携帯電話から閲覧しても自動的にモバイル用サイトに移動するようなことはありません。

そこで、Serene Bach の携帯電話用表示スクリプト(mb.cgi)を利用して記事を参照した際に、Amazon アソシエイトプログラムのリンクをモバイル用に変換する方法を考えてみました。ただ、調べたところどうしてもプラグインで実現する方法が見つからず、スクリプト改変になってしまいました。

ご要望があったので公開いたしますが、プラグインの導入に比べてスクリプト改変は格段に敷居が高いので、以下の注意をよくお読み頂き、ご理解頂いた上でご利用下さい。

  1. 本改変の変換対象は、『オススメ』メニューから「新規記事に利用する」処理によって記事内に挿入したアフィリエイトリンクのアドレスのみです。通常のアフィリエイトリンクには表示先を微妙に変えるようなカスタマイズも存在するようですが、そういったカスタマイズを施したリンクに本改変による変換を適用した場合の動作は保証いたしません。
  2. 本改変は Serene Bach 2.03R 〜 2.07D にて動作を確認しています。2.02R 以前、および将来リリースされるバージョンでは正常に動作しない可能性があります。また、導入したプラグインや本件とは別に導入した改変内容、Amazon 側の仕様変更等によって正常に動作しない可能性もあります。
  3. Amazon アソシエイトプログラムでモバイル用リンクを利用するには、既に Amazon アソシエイト ID を取得済みであっても新たにモバイル用リンクの利用申請と審査が必要だそうです。モバイル用リンクを表示するために必要な手続きは本件とは別にご自身で行って下さい。また、上記のような事情がありますので、オススメの表示にご自身の Amazon アソシエイト ID をご利用でない場合は本改変を実施することはご遠慮下さい。
  4. その他、本改変によって生じたいかなる不具合も、こちらでは責任を負いかねますし、フォローもいたしません。全ての問題についてご自身で対応できる方だけ実施して下さい。また、本件に関するお問い合わせ・ご質問についても、技術的な観点からのご指摘以外は対応できかねますのでご了承下さい。

さて、上記では散々うるさく申し上げましたが、改変手順自体はそれほど難しいものではありません。

まず、lib/sb/App/Mobile.pm をテキストエディタで開き、最下行の 1; のすぐ上に以下のコードを貼り付けます。

# convert amazon link
sub AMAZON_OLD_LINK { 'http://www.amazon.co.jp/exec/obidos/ASIN/(¥w+)/([¥w-]+)' }
sub AMAZON_LINK { 'http://www.amazon.co.jp/gp/product/(¥w+)(%3f|¥?).*tag=([¥w-]+)[^"]*' }
sub AMAZON_MOB  { 'http://www.amazon.co.jp/gp/aw/rd.html?uid=NULLGWDOCOMO&url=%2Fgp%2Faw%2Fd.html&lc=msn&dl=1' }
sub AMAZON_ASIN { '&a=' }
sub AMAZON_AID  { '&at=' }

sub _convert_amazon_link {
	my $body_text = shift;
	my $amazon_link = AMAZON_OLD_LINK;
	while ($$body_text =~ m!$amazon_link!g) {
		my $moblink = AMAZON_MOB . AMAZON_ASIN . $1 . AMAZON_AID . $2;
		$$body_text =~ s!$amazon_link!$moblink!;
	}
	my $amazon_link = AMAZON_LINK;
	while ($$body_text =~ m!$amazon_link!g) {
		my $moblink = AMAZON_MOB . AMAZON_ASIN . $1 . AMAZON_AID . $3;
		$$body_text =~ s!$amazon_link!$moblink!;
	}
}

そして、上に戻って 165 行目に以下の強調部分のコードを挿入します。

($body,$nxt) = &_mobile_paging_entry($body,$mMobilePage) if (length($body) > DEFAULT_TEXT_SIZE);
&_convert_amazon_link(¥$body);
$cms->tag('entry_description'=>$body);

各コードで Yen マーク()で表示されている部分は、ご使用のテキストエディタによってはバックスラッシュ()になることがあります。その場合はバックスラッシュで大丈夫です。

これでおしまいです。mb.cgi を起動して、リンク先が変更されているか確認して下さい。なお、Amazon のモバイル用サイトへのアクセスは携帯電話からのみ可能なようです。PC などからアクセスした場合はエラーページが表示されますのでご注意下さい。


コメント(日付順)▼コメントフォームへ

voda使い(2006/01/22 23:02)

他のキャリアは存じませんが、手元のvodafonbeだとこのリンクでは駄目みたいです。
</a>タグの後、下記のような1×1のイメージリンクが入っていますが、そこまで入れるとちゃんと購入画面に飛びました。
<img src="LINK (www.assoc-amazon.jp)【アソシエイトID】&amp;l=msn&amp;o=9&amp;a=【ASIN】" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

voda使い(2006/01/22 23:10)

うわ、申し訳ありません!
ご提示の改造のみでジャンプできました。電波状況が悪かったようです。すみません。

コメントする

コメントフォーム
  • ブラウザの JavaScript 機能が有効でないとコメントできません。
  • URI は自動リンクされます。
  • HTML タグは使えません(実体参照化されます)。
  • 初めてコメントされる場合は、一度このサイトについてに目を通してください。

トラックバック

この記事のトラックバックURI
http://prairie.sweet-smile.org/tb.cgi/7
Amazon のリンクをモバイル対応にする(改)(Serene Bach on the Prairie より)
2006/10/23 08:14
以前、記事内に挿入した Amazon リンクをモバイル対応リンクに変換するスクリプト改変を公開しましたが、どうも最近 AWS から提供されるリンク表...