Simplicityの特徴 › フォーラム › 不具合報告 › AMPのAmazon アソシエイトの画像URLについて
-
投稿者投稿
-
-
2016年12月15日 5:12 PM #48726鑑人ゲスト
素敵なテンプレートを作成頂きありがとうございます。
既知の不具合等読ませて頂きましたが、おそらく未報告だと思われますので、報告させて頂きます。Amazonアソシエイトから画像を取得して、AMPで表示しようとした場合、画像が表示されなくなる場合があります。
img のsrc内の画像URLが
通常表示時のIMGタグ
<img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00T90ES7I&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=XXXXXXXXX" >
AMP時のIMGタグ
<img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00T90ES7I&Format=_SL250_&ID=AsinImage&MarketPlace=JP&Service&WS=1&tag=XXXXXXXXX" >
という風に「ServiceVersion=20070822」の部分が「Service」という形に書き換わっています。
確認しましたところ、lib/amp.php の221行目
$the_content = preg_replace('/\??(version=\d*|(&|&|&)rel=\d*|(&|&|&)fs=\d*|(&|&|&)autohide=\d*|(&|&|&)showsearch=\d*|(&|&|&)showinfo=\d*|(&|&|&)iv_load_policy=\d*|(&|&|&)wmode=transparent)+/is', '', $the_content);
ここで、replaceをかける際に、正規表現でversionの項目がヒットし、replaceされているようです。
正規表現を否定戻り読みの形でServiceVersionがヒットしないようにしてみたところ、画像は正常に表示されるようになりました。
$the_content = preg_replace('/\??(version=\d*|(&|&|&)rel=\d*|(&|&|&)fs=\d*|(&|&|&)autohide=\d*|(&|&|&)showsearch=\d*|(&|&|&)showinfo=\d*|(&|&|&)iv_load_policy=\d*|(&|&|&)wmode=transparent)+/is', '', $the_content);
そもそもにYoutubeのURLクエリに対する部分にあたるので、この対応が正しく、他に影響がないのかは検証不足ではありますが、私の環境下では問題なく動作しております。
Amazonアソシエイトの画像リンクを使用していて、画像が出ないという方はここが原因かもしれません。以上、参考にしていただければ幸いです。
-
2016年12月15日 5:15 PM #48727鑑人ゲスト
すみません
正規表現を否定戻り読みの形でServiceVersionがヒットしないようにしてみたところ、画像は正常に表示されるようになりました。
の、下部にある、私の対応後のコードに誤りがありました。
$the_content = preg_replace('/\??(((?<!service)version=\d*)|(&|&|&)rel=\d*|(&|&|&)fs=\d*|(&|&|&)autohide=\d*|(&|&|&)showsearch=\d*|(&|&|&)showinfo=\d*|(&|&|&)iv_load_policy=\d*|(&|&|&)wmode=transparent)+/is', '', $the_content);
正しくはこの形です。
-
2016年12月15日 5:35 PM #48729みきゲスト
AMPページで
img
がamp-img
になっていないようですが
これってエラーになっていませんか?通常表示時のIMGタグ
AMP時のIMGタグ
-
2016年12月15日 5:39 PM #48730みきゲスト
そのまま表示されてしまった・・・
通常表示時のIMGタグ
<img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00T90ES7I&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=XXXXXXXXX" >
AMP時のIMGタグ
<img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00T90ES7I&Format=_SL250_&ID=AsinImage&MarketPlace=JP&Service&WS=1&tag=XXXXXXXXX" >
-
2016年12月15日 5:44 PM #48732鑑人ゲスト
みき さん
ごめんなさい、amp-imageにタグを書き換えずにsrcのURL部分だけを、コードのサンプルのために書き換えたため、そのようなタグとなっておりました。
正しくはご指摘の通り「amp-img」の形が正しいです。
-
2016年12月15日 10:38 PM #48741わいひらキーマスター
ご報告ありがとうございます。
「通常表示時のIMGタグ」で試してみたところ、確かに表示されませんね。
なので、いただいたコードで修正させていただきました。
次のバージョンで改善されると思います。それにしても、自分の書いた「YouTubeのクエリを無理やり削除するコード」酷いな…。
これは確か、Jetpackを利用することで、付加されるクエリーを無理やり削除するものなので、本来ならコメントアウトしても良いものかもしれません。
AMPページにおけるいくつか(画像、動画、本文)の表示エラーについて
もしかすると、考えが変わったら、そのYouTube用のコード自体をコメントアウトするかもしれません。 -
2016年12月16日 11:30 AM #48751鑑人ゲスト
わいひら さん
ご確認ありがとうございます。
リンク先も確認しました。なるほど。Jetpackの方でそのような現象があるんですね。
コード変更でも、コメントアウトでも、最適と思われる方を選択いただければと思います。少しでもお役に立てたようでよかったです。
ありがとうございました。 -
2016年12月16日 8:09 PM #48777わいひらキーマスター
ややこしい正規表現部分を再検討してみたところ、予期せぬ不具合の原因となりそうなので、やっぱりコメントアウトしておこうと思います。
ただ、教えていただいたコードは、いつでも使えるように、コメントとして残しておこうと思います。
消した後に不具合が出た場合は、すぐに戻せるように。
不具合報告と、修正案のおかげでいまいちな実装部分を思い出せて非常に助かりました。
ありがとうございます!
-
-
投稿者投稿
- このトピックに返信するにはログインが必要です。