先日行った、Amazonの画像が出ていない件について、表示を楽天のものに差し替えることで対処した。
Amazon APIの仕様変更への対応【農場主の日常】
楽天の商品の表示には、Amazonの表示プラグインNP_Amazonをベースに自作したNP_Rakutenを使っているのだけれど、画像の取得周りでうまく動いていない部分があった。
その修正を完了したので記載する。
楽天商品表示プラグインNP_Rakutenの基本仕様
NucleusにてAmazonの商品を表示するのに、NP_Amazonを使っているところは多いと思う。
その内容を、RakutenのAPIに置き換えたのがこのプラグイン。
主な使用は、NP_Amazonと同じで、
- 楽天のAPIキーを登録して使用する。
- 楽天市場商品検索APIのキーである商品コードを主キーとして、商品を検索する。
- 一定時間ごとにキャッシュを更新し、新たにデータを取得。
- 楽天から商品が無くなった場合もリンクとタイトルは残す。
- 画像URLが存在しない場合には、No Image画像を表示する。
Amazonの場合、商品コードは販売終了後も残っていることが多く、過去の紹介商品DBとして使えたのだけれど、楽天の場合はショップごとの管理になるのでページ自体が消えてしまうことも多い。
その場合、No Image画像に差し替えるのだけれど、これがうまくいっていなかった。今回その部分を修正する。
画像表示処理の変更点
楽天の商品を検索後、登録されているデータの画像表示が有効の場合、その画像のURLの存在をチェックする処理を追加。
具体的には、file_get_contents()を使用して戻り値をチェック。
戻り値がfalseならば存在しないとして、画像のURLを削除し、画像表示フラグをOFFにする。
NP_Rakutenのコードは、問題があるといけないので非公開。
改造時に発生した問題
実は、画像のチェックルーチンは以前試していたのだけれど、うまく動作していなかった。
Nucleusのプラグインを直接修正して確認していたのだけれど、この場合、動作不良のエラー表示をさせるのが難しい。
今回は別途PHPファイルを作成してデバッグ後に、該当箇所をプラグインに移植した。
PHPのようなスクリプト言語で、かつデータベースアクセスが絡む場合、ほかの人はどのようにデバッグをしているんだろうか。
ローカル環境を作るにしても、本番サーバと同じものを構成するのはなかなか大変な労力だし。
その他、今後の展望
動作は良好。これまで白の枠しか表示できなかった商品が、No Image表示に代わることが確認できた。
ただ、その白枠内の縦の中央に画像を置くのができていない。CSSをいじってはみたものの、どうもうまくいかない。
これは表示だけの問題なので、とりあえずはこのままとする。
これで、NP_Header、NP_Related、NP_Rakutenと修正が終わったので、ほかのサイトへの導入を試み、Amazonのリンクを修正する予定。
コメント