2010-08-09 Mon
AWSの仕様変更に伴い、当サイトでの使用を中止していた猛烈便利なプラグイン「NP_Amazon」ですが、最新版ではめでたく対応され、再びAmazonの在庫情報などを表示できるようになりました。ありがとうございます。
このプラグインを使うと、Amazonの画像を簡単に表示させることができるのですが、Amazon側に商品画像が無い場合、「商品画像がありません」という画像が表示されて、ちょっと悲しいです。ということで、自前で用意した画像を表示できるように手を入れてみました。
僕はアイテム内でこのプラグインを利用しているので、「<%Amazon(ASIN|画像サイズ|関連商品数|テンプレート名)%>」を拡張する事にしました。
convertAsbn関数内の3行目を以下のように修正します。
list($asbncode, $imgsize, $similarnum, $template, $noimg) = explode("|", $matches[1]);
「$template」の次に「$noimg」を作成しています。次にgetImage関数に値を渡す処理「$this->getImages(&$product, $imgsize);」に「$noimg」を追加。
$this->getImages(&$product, $imgsize, $noimg);
getImage関数でそれを受け取るように「$noimag」を追加。
function getImages($product, $size, $noimg) {
通常では、画像が無い場合Amazonから代替画像を取得して「$noimg」としているので、以下のように修正。コメントアウトしてる箇所がオリジナルです。
// $noimg = 'http://images-jp.amazon.com/images/G/09/nav2/dp/no-image-no-ciu._AA'. $noimgsize .'_.gif';
if ($noimg) {
$noimg = $CONF['MediaURL'] . $noimg;
} else {
$noimg = 'http://images-jp.amazon.com/images/G/09/nav2/dp/no-image-no-ciu._AA'. $noimgsize .'_.gif';
}
後は普通にアイテム中でNP_Amazonを使用し、画像が無い場合に用意した画像をメディアディレクトリ以下の任意の場所にアップロードします。
例えば、メディアディレクトリに「amazon」ディレクトリを作ってそこに画像をアップロードした場合、アイテム中の記述は以下のようになります。
<%Amazon(ASIN|画像サイズ|関連商品数|テンプレート名|amazon/ファイル名)%>
ASIN以外は標準の値のまま使用している場合、画像がある場合は
<%Amazon(ASIN)%>
無い場合は
<%Amazon(ASIN||||amazon/ファイル名)%>
としてください。
ちなみにこの方法ではAmazonの画像がある場合は代替画像を指定していても、Amazonの画像が表示されます。
« Old 2010-08-09
NP_ImageExtractor|指定の幅より小さい画像
2010-08-14 New »
NucleusでGoogle Maps API V3