AMPのAmazon アソシエイトの画像URLについて

Simplicityの特徴 フォーラム 不具合報告 AMPのAmazon アソシエイトの画像URLについて

7件の返信スレッドを表示中
  • 投稿者
    投稿
    • #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アソシエイトの画像リンクを使用していて、画像が出ないという方はここが原因かもしれません。

      以上、参考にしていただければ幸いです。

    • #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);

      正しくはこの形です。

    • #48729 返信
      みき
      ゲスト

      AMPページでimgamp-imgになっていないようですが
      これってエラーになっていませんか?

      通常表示時のIMGタグ

      AMP時のIMGタグ

    • #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" >

    • #48732 返信
      鑑人
      ゲスト

      みき さん

      ごめんなさい、amp-imageにタグを書き換えずにsrcのURL部分だけを、コードのサンプルのために書き換えたため、そのようなタグとなっておりました。

      正しくはご指摘の通り「amp-img」の形が正しいです。

    • #48741 返信
      アバター画像わいひら
      キーマスター

      ご報告ありがとうございます。
      「通常表示時のIMGタグ」で試してみたところ、確かに表示されませんね。
      なので、いただいたコードで修正させていただきました。
      次のバージョンで改善されると思います。

      それにしても、自分の書いた「YouTubeのクエリを無理やり削除するコード」酷いな…。
      これは確か、Jetpackを利用することで、付加されるクエリーを無理やり削除するものなので、本来ならコメントアウトしても良いものかもしれません。
      AMPページにおけるいくつか(画像、動画、本文)の表示エラーについて
      もしかすると、考えが変わったら、そのYouTube用のコード自体をコメントアウトするかもしれません。

    • #48751 返信
      鑑人
      ゲスト

      わいひら さん

      ご確認ありがとうございます。

      リンク先も確認しました。なるほど。Jetpackの方でそのような現象があるんですね。
      コード変更でも、コメントアウトでも、最適と思われる方を選択いただければと思います。

      少しでもお役に立てたようでよかったです。
      ありがとうございました。

    • #48777 返信
      アバター画像わいひら
      キーマスター

      ややこしい正規表現部分を再検討してみたところ、予期せぬ不具合の原因となりそうなので、やっぱりコメントアウトしておこうと思います。
      ただ、教えていただいたコードは、いつでも使えるように、コメントとして残しておこうと思います。
      消した後に不具合が出た場合は、すぐに戻せるように。
      不具合報告と、修正案のおかげでいまいちな実装部分を思い出せて非常に助かりました。
      ありがとうございます!

7件の返信スレッドを表示中
返信先: AMPのAmazon アソシエイトの画像URLについてで#48777に返信
あなたの情報:




スポンサーリンク
アドセンス(大)
アドセンス(大)