このブログでは Amazon の商品ページへのリンク作成のために,AmazonJS を使用しています.現在時点(2013.4.1)の最新バージョン 0.1beta4 に少し問題があったので,パッチを作成しました.
問題
元々,AmazonJS は参考価格と販売価格を併記する機能を持っていますが,参考価格と販売価格の大小比較をする部分において両者を文字列として比較してしまっています.そのため,価格によっては参考価格のみしか表示しなくなります.
例えば,参考価格が 1 万円で価格が 1,100 円の場合,参考価格の方が安いと誤判定し,参考価格の 1万円のみが表示されてしまいます.
修正方法
wp-content/plugins/amazonjs ディレクトリにある amazonjs.js に下記のパッチを当てることで,解決できます.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
--- amazonjs.js.orig 2013-03-26 21:47:36.000000000 +0900 +++ amazonjs.js 2013-03-26 22:03:37.000000000 +0900 @@ -283,8 +283,8 @@ item = this.prepareData(item); return $.tmpl($.template[tmpl]||this.getTemplate(item), item, {isSale:function(){ if (this.data) { - var lp = this.data.ListPrice, la = lp.Amount || 0, - os = this.data.OfferSummary || {}, sp = os.LowestNewPrice || {}, sa = sp.Amount || 0; + var lp = this.data.ListPrice, la = Number(lp.Amount) || 0, + os = this.data.OfferSummary || {}, sp = os.LowestNewPrice || {}, sa = Number(sp.Amount) || 0; return (sa != 0 && sa < la); } return false;}}); |
やっていることは,Number() で明示的に数値に変換しているだけです.変更の影響は関数内に限定され,副作用もありません.
コメント
提供ありがとうございます。採用させて頂きました。