Smarty3とZendframework1系を使ってアマゾンAPIのSmartyプラグインを作くる

まず、完成形の確認。

テンプレート内でSmartyタグを使って
アマゾンの特定カテゴリ商品を並べるといった機能です。

前置き
・アマゾンのAPIキーとシークレットキーが取得済みである。
・アソシエイトキーも取得済みである。
・Smarty3とZendFramework1.12系がincludeされている。

という前提で話を進めます。

なお、ZendFrameworkの1.11系を使ってみたら
Zend_Service_Amazon()が現在のアマゾンAPIに対応していないようです。
なので今回はZF1.12.3を使用しました。

1.とりあえず基本形

.php

pluginsフォルダを適当に追加して下さい。

2.pluginsにamazonプラグインを追加します。

1で設定した追加プラグインフォルダに以下ファイルを足します。
ファイル名、funciton名はプラグインの法則にしたがって作成。

function.amazon.php

APIにリクエストする前に$defautと$paramsでクエリー用パラメータをマージさせます。
いちいち呼び出し元でパラメーター設定が面倒なら$defaultでBrowseNodeやCountなど入れておくと良いでしょう。
ちなみにCountの最大値は10までです。

今回は、テンプレート側で見た目を制御したいので
returnでHTMLを返さずassignをさせる方法にしました。

Zend_Loader_Autoloaderがかかっていれば
「include_once ‘Zend/Service/Amazon.php’;」などはいらないかもね。

3、テンプレートから呼び出し

.tpl

これで特定カテゴリの商品を5件、簡単に呼び出せます。

{amazon}でSearchIndexやResponseGroupなどもパラメーター設定すれば
そのままクエリーされるので、使う場面に応じた調整が可能です。

しかし・・画像の拾い方が面倒ですね。
なぜメソッドなのだろう^^;

4、キャッシュ機能

本格的な運用に使うならキャッシュ機能を利用しましょう。
今回のサンプルはシンプルに書いているため省略しています。

アマゾンAPIリクエストは1クエリー/秒かつ、500クエリー/時間だったような気がします。
この制限は公式ガイドラインによると収益に対して変動のようなことが書かれているようですが、
通常は簡単なキャッシュをしておけば充分かと思います。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL