MovableType で
Amazon Web Service
を使えるようにするためのプラグインを書いて見ました。すでに同様の機能を持つ
MTAmazonや、
aws.plがありますが、
プラグインの習作ということで公開しますm(_ _)m
機能的には他と比べて劣る部分の方が多いです(汗)
その一方、PHP を使用することで、
記事の再構築を必要とせずに商品の最新情報が取得できる点がウリかなと思っています。
はじめに
Amazon Web Service の取得処理などのほとんどを PHP で行っているため、サーバで PHP が動作する必要があります。
また、
Key Values Plugin
と連係して動作することを前提に設計されていますので、こちらも一緒にどうぞ。
ダウンロード
追加されるテンプレートタグ
- MTUseAmazonWebService
- ページの頭あたりに置いてください。AWS 処理を行う PHP コードを生成します。
- MTAwsAsinSearch
- ASIN コードによる商品検索を行う場合に使用するコンテナタグです。
- asin
- 検索する商品の ASIN コードです。パラメータを [ と ] で括ると、MTタグとして解釈します。
- MTAwsKeywordSearch
- キーワードによる商品検索を行う場合に使用するコンテナタグです。
- catalog
- 検索するカタログを指定します。
指定できる値は AWS のドキュメント
を参照してください。パラメータを [ と ] で括ると、MTタグとして解釈します。
- keyword
- 検索ワードを指定します。パラメータを [ と ] で括ると、MTタグとして解釈します。
- lastn
- 取得する検索結果の数。パラメータを [ と ] で括ると、MTタグとして解釈します。
- MTAwsCustomerReviews
- カスタマーレビューを参照するためのコンテナタグ。
- lastn
- 参照するレビューの数を指定します。パラメータを [ と ] で括ると、MTタグとして解釈します。
- MTAwsUrl
- 商品の個別ページへの URL を返します。アフィリエイト ID を含みます。
- MTAwsAsin
- 商品の ASIN コードを返します。
- MTAwsProductName
- 商品名を返します。
- MTAwsCatalog
- 商品のジャンル文字列を返します。
- MTAwsCatalogIconUrl
- 商品のジャンルを表すアイコンの URL を返します。
- MTAwsReleaseDate
- 商品のリリース日を返します。
- MTAwsManufacturer
- 商品の製造者を返します。
- MTAwsImageUrlSmall
- 商品画像(小)の URL を返します。
- MTAwsImageUrlMedium
- 商品画像(中)の URL を返します。
- MTAwsImageUrlLarge
- 商品画像(大)の URL を返します。
- MTAwsListPrice
- 商品の定価を返します。
- MTAwsOurPrice
- 商品の Amazon での販売価格を返します。
- MTAwsSalesRank
- Amazon での売上ランキング順位を返します。
- MTAwsAvailability
- 商品の発送状態を返します。
- MTAwsAvgCustomerRating
- 商品の平均レビュー点数を返します。
- MTAwsAvgCustomerRatingImageUrl
- 商品の平均レビュー点数の画像を返します。
- MTAwsTotalCustomerReviews
- カスタマーレビューの総数を返します。
- MTAwsCustomerReviewRating
- 一つのカスタマーレビューの評価点数を返します。MTAwsCustomerReviews コンテナタグの内部で使用できます。
- MTAwsCustomerReviewRatingImageUrl
- 一つのカスタマーレビューの評価点数の画像を返します。MTAwsCustomerReviews コンテナタグの内部で使用できます。
- MTAwsCustomerReviewSummary
- 一つのカスタマーレビューの概要を返します。MTAwsCustomerReviews コンテナタグの内部で使用できます。
- MTAwsCustomerReviewComment
- 一つのカスタマーレビューの本文を返します。MTAwsCustomerReviews コンテナタグの内部で使用できます。
導入方法
Step 1. プラグインの設定
アーカイブに含まれる
MTAmazonWebService.pl
(または
MTAmazonWebService.php) を修正します。
- MTAWS_AMAZON_ASSOCIATE_TOKEN
- あなたの Amazon Associates ID に書き換えてください。
そのままにしておくと作者一人がオイシイ思いをしてしまいます(*´ω`)ウマー
- MTAWS_RANDOM_DONATE_RATE
- ランダム寄付の確率。
あなたのアソシエイトIDと作者のIDをある確率で入れ替えることで運がよければ作者にお小遣いが入る仕組みになっています。
「ビタ一文あげません」という場合は 0 にしてください(T_T)
- MTAWS_OUTPUT_CHARSET
- 出力する文字コード。UTF-8, UTF-7, ASCII, EUC-JP,SJIS, JIS, ISO-2022-JP などが指定できます。
詳細は PHP マニュアルを参照してください。
- MTAWS_CACHE_PATH
- 製品情報キャッシュの保存ディレクトリ。
Amazon から取得した製品情報を一定期間キャッシュすることでサーバ負荷を低減し、ページレスポンスを向上しています。
空欄を指定するとキャッシュ使用しませんが、ページを表示するたびに Amazon に問合せます。
nCacheExpireTime も参照してください。
- MTAWS_CACHE_EXPIRE_TIME
- 製品情報キャッシュの寿命。
キャッシュが、ここで指定された期間より古い場合にのみ、Amazon への問合せを行います。
Step 2. プラグインのインストール
アーカイブに含まれる
MTAmazonWebService.pl を MovableType のプラグインディレクトリにコピーします。
そして、MovableType の管理画面のメインメニューで、"使用可能なプラグイン"欄に表示されていることを確認します。
Step 3. テンプレートの一例 - ASIN コードによる商品紹介
下の例では、
Key Values Pluginを
使って、記事の追記欄に
"AwsAsinSearch1=123456789"
のように紹介した商品の ASIN コードを埋め込む例です。
当サイトの記事ページ右のサイドバーはこの方法で実現しています。
<MTKeyValues iterate="1" pattern="m/AwsAsinSearchd*/i">
<MTKeyValuesHeader>
<h4><a href="http://www.amazon.co.jp/">Amazon.co.jp</a></h4>
</MTKeyValuesHeader>
<MTAwsAsinSearch asin="[MTKeyValue]">
<a href="<$MTAwsUrl$>"><$MTAwsProductName$></a><br />
<a href="<$MTAwsUrl$>"><img src="<$MTAwsImageUrlSmall$>"></a><br />
<img src="<$MTAwsCatalogIconUrl$>"><$MTAwsCatalog$><br />
定価<s><$MTAwsListPrice$></s><br />
価格<b><$MTAwsOurPrice$></b><br />
<img src="<$MTAwsAvgCustomerRatingImageUrl$>" title="5 つ星のうち <$MTAwsAvgCustomerRating$>"><br />
<MTAwsCustomerReviews lastn="1">
<$MTAwsCustomerReviewSummary$>
</MTAwsCustomerReviews>
</MTAwsAsinSearch>
</MTKeyValues>
Key Values Plugin にはバグがあって、そのままでは使えません(^^;) 配布しているページのコメント欄に対策が載っていますので、パッチを当ててご利用ください。
Step 4. テンプレートの一例 - キーワードによる商品紹介
テンプレートに下の例のように検索キーワードから商品紹介を行うようテンプレートを書いた上で、
<MTKeyValues><MTIfKeyExists key="AwsKeywordSearch">
<MTAwsKeywordSearch keyword="[MTKeyValue key='AwsKeywordSearch']" catalog="[MTKeyValue key='AwsKeywordSearchCatalog']" lastn="[MTKeyValue key='AwsKeywordSearchNum']">
<a href="<$MTAwsUrl$>"><$MTAwsProductName$></a><br />
<a href="<$MTAwsUrl$>"><img src="<$MTAwsImageUrlSmall$>"></a><br />
<img src="<$MTAwsCatalogIconUrl$>"> <$MTAwsCatalog$><br />
定価<s><$MTAwsListPrice$></s><br />
価格<b><$MTAwsOurPrice$></b><br />
<img src="<$MTAwsAvgCustomerRatingImageUrl$>" title="5 つ星のうち <$MTAwsAvgCustomerRating$>"><br />
</MTAwsKeywordSearch>
</MTIfKeyExists></MTKeyValues>
追記欄に以下のようなキーと値を書くと、ページ毎に検索内容を変えることも可能です。
AwsKeywordSearch=MovableType
AwsKeywordSearchCatalog=photo-jp
AwsKeywordSearchNum=4
改造のヒント
標準で MTAmazonWebService プラグインはページ毎に AWS の処理ルーチンを書き出すので、
ディスクスペースに優しくありません。
アーカイブの
altに含まれるプラグインは、
AWS の処理ルーチンを外部ファイル(
MTAmazonWebService.php)に独立したものです。
トラブルシュート - 動かない時は?
この項目は作成中です。
いろいろ
- オリジナルの著作権表示を改変しない限り、自由に改造・転載・配布できます
楽屋裏
自前サイトで使う分に必要な機能のみ実装してあるので、他サイト様で汎用的に使えるかは判りませんm(_ _;)m
また気が向いたら&改造の必要が出てきたらバージョンアップすると思います…
寄せられたコメント (全 2 件中、最新 5 件まで表示しています)
http://www.bradchoate.com/weblog/2002/07/27/keyvalues#c001165
参考まで当サイトで使用している版↓
http://www.magicvox.net/cgi-bin/mt/extlib/bradchoate/keyvalues.pm
Key Values Pluginのバグ対処方法をぜひ教えていただきたいのですが、
もしよろしかったらぜひご教授お願いします<(_ _)>