ppBlogユーザーであるたろさんから,"管理者機能の中にあるアマゾンサーチの中に「おもちゃ&ホビー」のカテゴリを追加したいのですよ"(要約)というリクエストをへっぽこBBSで頂きました。
で,BBSでは一応解決したのですけどね。私自身,この管理者機能のアマゾンの機能を全く使ったことがなかったのですが,便利ですね。キーワードを入れてカテゴリを選んでポン!とボタンを押せばアマゾンサーチしてくれちゃう。
ここまでは本家アマゾンでも出来ますよ。ただ,気に入った商品が見つかって,これをblogで紹介したいと思ったときに,その商品をクリックするだけでhtmlのコードが生成されてしまうんですよ。しかもIEならばクリップボードにまで自動的に貼り付けてくれるので後はctrl+vっと。これがblogに標準でついてくるんです。
sbにもついてますね。他にもあるのかな。
まぁそれはともかく,ppBlogバージョンのアマゾンサーチは使っているうちにちょっと気になることがありました。検索を実行すると10件ずつ検索結果を表示してくれるのですが,次の10件を表示させようとすると検索のときに指定したカテゴリが無効になってしまうようなのです。
これでは困ったチャンなので改造です。せっかくなので新しいカテゴリを追加するところから書こうと思います。
もっと読む»ではさっそく。変更するファイルはaap.xslとamazon_associate.phpです。カテゴリの追加は両ファイルとも同じことをします。ファイルを見ていくと,
<option value="books-jp">和書</option>
なんてところが出てくると思います。この並びの好きな場所(しかし</select>の前まで)に
<option value="toys-jp">おもちゃ&ホビー</option>
と追加してください。これだけです。あとは全てのカテゴリから検索したいときもあるかなぁと思いましてね。それも追加したい方は次のコードを好きな場所に貼り付けてください。
<option value="blended-jp">すべての商品</option>
ちなみに私は一番最初に追加しました。で,"次の10件"をクリックしても指定したカテゴリが解除されないようにする方法です。これはaap.xslだけを変更します。これまたファイルを見ていくと
<xsl:template name="nextPage">
という場所が見つかると思います。ここの
<xsl:apply-templates select="ProductInfo/Request/Args/Arg[@name='KeywordSearch'/]" mode="getValue" />
という行の下に次の2行を追加します。
10/26追記:"&"は半角に直してください。でないとエラーが出ます。すみませんでした。<xsl:text>&amp;mode=</xsl:text>
<xsl:apply-templates select="ProductInfo/Request/Args/Arg[@name='mode'/]" mode="getValue" />
で,出来たらその下の方にある
<xsl:template name="prevPage">
という場所にも同じ場所に同じ2行を追加します。構成はほとんど同じですので分かると思います。
これで完成です。"次の10件"を押すと,検索フォームの方は一番最初のカテゴリ候補が表示されてますが(私の場合は"全ての商品"),検索自体はちゃんとはじめの検索のときに指定したカテゴリで検索されています。
こんなところですね。ちなみにaap.xslはUTF-8,amazon_associate.phpはEUCで保存されていますのでご注意を。
<?xml version="1.0" encoding="UTF-8" ?>
- <ProductInfo>
<ErrorMsg>We encountered an error applying your XSL template. Please retry.</ErrorMsg>
</ProductInfo>
って言われて検索結果が出てこないのですが・・・コピペでやってるのですがなぜ?[グスン]
カテゴリ追加は出来たのになぜでしょう〜。