PR(記事内にアフィリエイト広告が含まれています)
スポンサーリンク
Sleipnir

Amazon用XSLTファイルを修正

Sleipnir用 Amazonアソシエイト スクリプトで使っていたXSLTファイルですが、とりあえず動いたんでサイトで公開したものの、幾つか気になっていたところがあります。
1:CatalogがBookの時は作者が表示されるので問題ないが、それ以外の商品だと余分に一行スペースが表示されることになる。
2:CatalogがMusicの時は作者が表示できない(AuthorsではなくArtistsという変数名であるため)。
3:MediaがVideo Gameの時はPlatforms(機種)も表示させたい。
といった感じだったので、最初はどうにかJSファイル内で分岐させて、別々のXSLTファイルを用意するしかないのかな、とか思っていたんですが実はXSLTファイル内で条件分岐が出来るんですね。
そこで、条件分岐を含めてXSLTファイルを書き換え、amz.xslという別のファイルとして追加して圧縮ファイルに同梱させました。前回のamazon.xslも念のために同梱してますが、問題なければamz.xslを使うようにした方がいいです。
記事の続きでは具体的にどこが変更されたか書いていますが、読むのが面倒だったらamz.xslのアソシエイトIDのところだけ書き換えてアップしてJSファイル内のXSLTのURL指定を変更すれば問題ないです。


変更したのは以下の三箇所です。

<xsl:variable name="cat" select="Catalog" />
<xsl:variable name="artist" select="Artists" />
<xsl:variable name="plat" select="Platforms" />

XSLTファイルの上の方の変数定義に、上記の3つを追加しました。これによりCatalogが$cat、Artists*1が$artist、Platforms*2が$platとして使用できるようになります。

<xsl:if test="$cat='Book'">
<xsl:value-of select="$auther"/>
<br />
</xsl:if>
<xsl:if test="$cat='Music'">
<xsl:value-of select="$artist"/>
<br />
</xsl:if>

CatalogがBookのときは$autherを、Musicのときは$artistを表示させるようにしました。それ以外は改行なしになります。choose-case文使った方が見栄えがいいとは思ったんですが、なんかうまく動かなくて面倒だったから不恰好にif文並べました。動けばいいやの精神で使ってください。

<xsl:value-of select="$media"/>
<xsl:if test="$media='Video Game'">
<xsl:value-of select="concat(' [', $plat,']')" />
</xsl:if>

CatalogがVideo Gameのときだけ、後ろに$platを付けるようにしました。
あと、なんでわざわざファイル名を変えたかと言うと、名前を変えずにamazon.xslを上書きアップロードしてもキャッシュか何かに残っているのか、前回のXSLTファイルを読み込んだかのような誤動作を起こすことが多かったからです。少し面倒に思えるかもしれませんが、amz.xslをアップしてからJSファイルでのXSLTファイルの指定も変更した方がそういう誤動作が無くて面倒なことにならないからオススメです。
なお、この記事では例として値段も表示するようにしていますが、個人的に使う分のXSLTファイルでは消費税総額表示を考慮して値段を表示しないようにしています。配布している圧縮ファイル内のXSLTファイルでは値段を表示するようにしていますので、もし表示させたくない方はXSLTファイルから下記の部分を消去してください。

<xsl:value-of select="$price"/>

以下に各メディア別の表示例を羅列してみます。同じamz.xslを使っても、メディアを自動判別して表示項目が変わっているのが分かっていただけると思います。

映画でにぎりっ屁!

榎本 俊二
講談社
2004/01
¥ 1,260
コミック

テトリスフラッシュ

任天堂
1993/09/21
¥ 6,014
Video Game [ FAMILY COMPUTER ]

シベリア超特急 劇場公開完全版

ジェネオン エンタテインメント
2002/02/22
¥ 3,990
DVD

人生はOK牧場!

ガッツ石松
幻冬舎
2004/12
¥ 1,260
単行本

超兄貴〜兄貴のすべて〜

葉山宏治
コロムビアミュージックエンタテインメント
1998/05/21
¥ 2,415
CD

HP StorageWorks Ultrium Tape Arrayモジュール

ヒューレット・パッカード
2002/10/31
¥ 2,079,000
エレクトロニクス

ビキニカラテ Bikini Karate Babes

エレクトロニック・アーツ
2002/12/26
¥ 6,090
CD-ROM

美少女戦士セーラームーン 変身携帯ルナティアLセット

バンダイ
2004/04/29
¥ 3,675
おもちゃ&ホビー

HITACHI 温水洗浄便座 ファミレット HC-3200D-W

日立
2004/10/20
¥ 86,100
ホーム&キッチン

  • 注1 : Artistsと複数形になっているのは、親ノード名で宣言しないと変数が取得できないからです。子ノードのArtistをXSLT内で宣言しても値が取得できないので要注意です。同様にAuthorsも親ノードが複数形で、子ノードがAuthorなので注意しましょう。
  • 注2 : プラットフォーム、いわゆる機種のこと。例:Nintendo DS、Nintendo Virtual Boy、Nintendo 64DD

コメント

タイトルとURLをコピーしました