Amazon XSLT for MT
---
MTで新たなテンプレートを作成するだけで、Amazon webservices の検索結果を自分のウェブログのように表示できるようにする方法です。
MTさえ利用できる環境にあれば、インストールに必要な条件はありませんが、Amazon webservices を利用するので、 Amazon webservices のデベロッパー・トークン、及び AmazonのアソシエイトIDを取得済みであることが前提です。(現時点03/09/19、どちらも無料です)
リスト1、リスト2をコピー&ペーストして、テンプレートを作成します。Index Templateのリビルドと同時に更新されるように、チェックボックスにチェックを入れてセーブします。
リスト1::JavaScript for amazon web service
テンプレート出力ファイル名 : aws.js
リスト2::XSLT for amazon web service
テンプレート出力ファイル名 : aws.xsl
セーブしたらそれぞれリビルドして、ファイルを出力しておきます。以上で準備は完了です。
- - - 利用サンプル
- e.g.1. 検索フォーム
-
下記のリスト3をエントリやテンプレートに貼り付けると、検索機能を利用できます。リスト3の編集箇所を記しておきます。
1行目:リスト1のJavaScriptへのパス
3行目:デベロッパートークン
4行目:アフェリエイトID
5行目:リスト2のXSLTへのパス
それぞれ自身の環境のものに書き換えて貼り付けます。
検索結果の表示は、MTのCSSの定義に従います。CSSの名前をデフォルトと異なる名前にしている場合には、リスト2の10行目にあるCSSへのパスを編集します。
リスト2のXSLTは、MTのデフォルトテンプレートをもとに作成してあります。検索結果画面のサイドメニューをカスタマイズしたり、画面の構成を変更したい場合、通常のテンプレートを編集するようにしてリスト2の該当箇所を変更します。このサイト用にカスタマイズしたものを作ってみました。リスト3
- e.g.2. ASINサーチ
-
情報を閲覧したい書籍のISBNコードがわかっている場合、下記のようなリンクを設けると書籍の詳細を表示させることができます。
リスト4
http://xml.amazon.co.jp/onca/xml3 ?locale=jp &type=heavy &AsinSearch=4788505800,4046515082,4757100809 ←ISBN (複数の場合はカンマ区切り) &dev-t=D39JFLVWL31IM ←デベロッパートークン &t=dailyblogbysn-22 ←アソシエイトID &f=https://bloggers.ja.bz/sunouchi/aws.xsl ←リスト2のXSLT出力ファイルを、フルURLで指定
(実際にはコメントをはずして、1行です)
http://xml.amazon.co.jp/onca/xml3?locale=jp&type=heavy&t=dailyblogbysn-22&AsinSearch=4788505800,4046515082,4757100809&dev-t=D39JFLVWL31IM&f=https://bloggers.ja.bz/sunouchi/aws.xsl
早速使わせていただきました。
なかなか便利そうでGOODです。
トラックバック失敗したのでコメントで失礼します。
Posted by: pizza | September 20, 2003 7:45 PM
ありがとうございます
面白い使用方法などありましたら
是非教えてください
Posted by: sunouchi | September 29, 2003 8:36 PM
さっそく使用させて頂きました。ありがとうございました。
幾つか改善点がありましたので,お伝え致します。
MacOSXのsafariから使用すると,以下の問題がありました。
1. 検索フォームに日本語を入れると,検索できないようです。
2. 複数のキーワードを入れると正確に検索結果が表示されない。
MacOSXのIEやnetscapeでは以上の問題は発生しませんでしたが,発売日順でのソートが上手く行かないようです。
aws.xslはDOCTYPE宣言がないからか,IEでは同じCSSを用いていても文字の大きさ等が変わってしまいます。
リダイレクトが暴走するので,aws.xslは以下のように修正しました。
http://xml.amazon.com/onca/xml3
↓
http://xml-na.amznxslt.com/onca/xml3
Posted by: R-SITE | November 30, 2003 11:22 PM
ご指摘どうもありがとうございます
aws.xsl について、"xml.amazon.com"を"xml-na.amznxslt.com"へ修正しました。
Safariでの動作不具合は、おそらくJavaScriptによるエンコードの問題かと思いますので、対応してみたいと思います。
Posted by: snotch | December 1, 2003 5:32 PM
使用させて頂きました。
ありがとうございました。
私のところのMTはEUC-JPで運用している為、
MTとの連携は出来ませんでした。
aws.xslだけUTF-8のままアップして使っています。
一度MTのUTF-8化を行ったのですが、
他に運用しているphpプログラムとの絡みもあり、泣く泣くEUC-JPに戻しました。
何かいい方法が無いか考えてみます。
Posted by: Mist | December 4, 2003 2:10 AM
リスト2は3行目に下記のDOCTYPEの指定を入れてあげると,MTの他のページとのフォントの大きさのズレがなくなります。
<xsl:output method="xml" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="DTD/xhtml1-strict.dtd" />
Posted by: R-SITE | December 6, 2003 10:25 PM
R-SITEさん、ありがとうございます
リスト2に追加させていただきました
Posted by: snotch | December 9, 2003 6:08 PM
現在製作中のサイトに、早速使わせていただこうと思い、試してみたところ検索時にどうしてもエラー(We encountered an error applying your XSL template. Please retry.)が出てしまいます。
どうやら& ampのampがリビルド時に削除されてしまうようなのです。versionが2.661のせいなのかと調査中なのですが、何かヒントはないでしょうか?
Posted by: gp | February 8, 2004 7:55 AM
はじめまして gpさん
当方もMT2.661を使用しておりますが、問題なく動作しております。リスト2の内容を、そのままテンプレートのフォームにペーストするだけで動作するはずなのですが・・・
何行目あたりでエラーが出ているかわかると、何かわかるかもしれません。
Posted by: snotch | February 9, 2004 9:59 PM
お返事ありがとうございます。
説明がわかりにくいかと思いますが、リビルド後に出力されるaws.xslの中の& ampがすべて&になってしまうのです。このサイトのaws.xsl(勝手にすみません)と自分のサイトで出力されたaws.xslを比べてみたところ、MTタグで出力される部分以外では、& amp以外は同じに見えました。そこで、xsl:templat部分を自分のサイトのものにコピペしたら正常に検索することができました。自宅サーバでperl5.8,MT2.661,UTF-8,MySQLという環境なのですが、なぜですかねー
とりあえずは、今のファイルを再構築を行わないことで回避しようとは思っていますが‥‥
Posted by: gp | February 10, 2004 12:07 AM
上記方法だと
Invalid locale parameter "jp". Valid locales are: us
がでます。
参考
http://jam.apricot.co.jp/affiliate/aws/awschange.html
によると 3/15 に問い合わせ先が変更になったようです。
http://xml-na.amznxslt.com/は
http://xml.amazon.co.jp になったようです。
お世話とは思いますがコメントさせていただきます。
Posted by: ハイジドルフ | March 22, 2004 7:19 PM
上記内容のAWSを実装中であります。お世話になっております。基本的に初心者なもので分からない部分があり質問させていただきます。
自宅にてサーバを構築しており、MT2.661をWindowsXP + IISにて動作させております。snotch様がコーディングされた上記プログラムをコピペしたものの、検索すると.xlsを適用できない旨のエラーが表示されてしまいます。
最も疑問な点は、MainIndexにおける、aws.xlsのURLの指定方法についてです。インターネットアドレスを指定した場合、ローカルアクセスだとエラーになるのは何となく分かるのですが、外部PCからのアクセスでも.xlsを適用できない旨のエラーが表示されます。xmlデータは間違いなく取得できていて、snotch様のサーバのaws.xlsは適用可能であることは確認させていただきました。
何か情報をお持ちでしたらご教授いただけないでしょうか?
Posted by: evian | April 1, 2004 10:53 AM
ハイジドルフさん
コメントありがとうございます
関連URLの変更処理を行いました
これで上手くいくと思います> evian さん
Posted by: snotch | April 1, 2004 11:15 PM
素敵なシステムだと思い、使用させていただきたいと思っています。ですが…本当に初心者的質問で申し訳ないのですが…
リスト1と2を
新しいインデックス・テンプレートを作る
で制作し、リビルド後、
リスト3を
Main Indexテンプレートに組み込んだのですが…
実際検索をしてみると、以下のようにxmlのソースがそのまま表示されてしまいます。
何が悪いのか悩んでも悩んでもわからなくて…もし何か、アドバイスがありましたら、教えていただけないでしょうか…?
突然ずうずうしいとは思いますがよろしくお願いします。
-
-
-
・・・中略
Your request has one or more parameters missing. Please check and retry.
Posted by: あかさ | May 20, 2004 2:47 PM
はじめまして
結果として表示されているXMLはアマゾンからのエラーコードです。XSLTの構文もしくは、パラメータに誤りのある可能性が高いので、下記の項目をもう一度確認してみてください。日本語を用いる場合には、文字コードとしてUTF-8を使用する必要があります。
1行目:リスト1のJavaScriptへのパス
3行目:デベロッパートークン
4行目:アフェリエイトID
5行目:リスト2のXSLTへのパス
それから、リスト3の先頭に文字化け(??がリスト先頭にくっついていました)が発生していましたので、一応確認してみてください。
Posted by: snotch | May 24, 2004 11:15 PM
お返事ありがとうございます!
私の文字コードがUTF-8でないのが問題のようです…。
以前のコメントに「EUC-JP」での話題が載っていたので、「EUC-JP」でも大丈夫なのかと誤解していました。
自分で書き出したXMLで、サイト名を書き出す時点で「テキストの内容に無効な文字が見つかりました。」とエラーが出ていたので、早く気がつくべきでした。
↓ここの部分です
<title><$MTBlogName$></title>
お手数をかけてすみませんでした。
残念ですが設置はあきらめます。
どうもありがとうございました!
Posted by: あかさ | May 25, 2004 2:14 PM
解説通り作業を行い試してみたところ検索時にどうしてもエラー(We encountered an error applying your XSL template. Please retry.)が出てしまいます。& ampのampがリビルド時は削除されていません。
関係がないとは思いますがAmazonアソシエイトの審査に通らないとWebサービスは使用できないのでしょうか? 関係ないですよね。。。(-_-;)
Posted by: ダイキ。 | May 18, 2005 6:40 PM
こんばんは、初めまして。
この記事のAmazon XSLT for MTを使わせていただきました。
とってもCSSに苦労しながら作りました。
なかなか面白い仕組みですね。
でも、できて満足しています。
また、これからもよろしくお願いします!
Posted by: ヨンシマイ | September 3, 2006 2:39 AM