キーワード検索した際にサイドに表示される関連商品情報を変更しました。これまで Amazon と楽天を併用していましたが、楽天のみに変更するとともに、評価の件数と平均点を表示するようにしました。アフィリエイトの点で Amazon のクリックの有効期間が1日と短いのに対して、楽天が1か月あるというのが変更の大きな理由ではあるのですが、API の使い勝手が楽天のほうがよいというのも変更の理由です(Amazon は、商品写真がきれいというメリットがあるので、個別商品の紹介では引き続き使用しています)。
Amazon の API(AWS)は、きっちり作り込めばできることは多いのですが、出力される内容が細分化されているため、若干敷居が高い気がします(ドキュメントも英語ですしね)。それに比べると、楽天はカスタマイズの点では不十分なところもありますが、扱いやすいと思います。
使い方としては、リクエスト用のURLを
$developerId = '(ディベロッパーID)'; $affiliateId = '(アフィリエイトID)'; $operation = 'ItemSearch'; $keyword = rawurlencode('(検索したいキーワード)'); $version = '2008-09-01'; $hits = 10; $page = 1; $sort = rawurlencode('-reviewCount'); $availability = 1; $field = 0; $imageFlag = 1; $request_url = "http://api.rakuten.co.jp/rws/1.12/rest?developerId={$developerId}&affiliateId={$affiliateId}&operation={$operation}&keyword={$keyword}&version={$version}&hits={$hits}&page={$page}&sort={$sort}&availability={$availability}&field={$field}&imageFlag={$imageFlag}";みたいな感じで作ったら、
$xml = file_get_contents($request_url); require_once 'XML/Unserializer.php'; $options = array( "parseAttributes" => true ); $unserializer =& new XML_Unserializer( $options ); $unserializer->unserialize( $xml, FALSE ); $res = $unserializer->getUnserializedData();のようにすれば、結果を配列に入れることができます。あとは、ドキュメントと結果の配列を見比べながら、必要なデータを抽出すればOKです(例ではキーワードに関連する、画像があり、入手可能な商品を評価数の多い方から10件取得しています)。