AdSenseの代替広告をAWSでの続き。このエントリの追記で、ページ自体のランダム化はできたのですが、これでは各ページの最初のアイテムしか出てこないので、どうにかしてランダムの順位のアイテムを出そうといろいろいじってました。XSLファイル内ではどうにかできそうもないので、各順位を取り出すXSLファイルを10用意し(1ページに付き10アイテムなので)、AdSenseのJavaScriptコードの方でランダムにそれを呼んでやるという手段になりました。

まずは1.xsl~10.xslというXSLファイルを作ります。内容は特に凝ったものではなく、4.xslなら、

<xsl:for-each select="ProductInfo/Details">
  <xsl:if test="position() = 4">
    ...
  </xsl:if>
</xsl:for-each>

というように4番目のDetailsのみから出力してるだけ。他はAWSのXSL変換サービスでAdSenseライクに整形するためのXSLとほとんど同じ。

そしてAdSenseのJavaScriptコードの方で、1.xsl~10.xslのXSLファイルをランダムに呼んでやると。

var google_alternate_ad_url = "http://xml.amazon.co.jp/onca/xml3";
google_alternate_ad_url += "?t=hail2unet-22";
google_alternate_ad_url += "&dev-t=XXXXXXXXXXXXXX";
google_alternate_ad_url += "&mode=music-jp";
google_alternate_ad_url += "&type=lite";
google_alternate_ad_url += "&f=http%3A%2F%2Fhail2u.net%2Fstyles%2Faws%2F";
google_alternate_ad_url += Math.ceil(Math.random() * 10) + ".xsl";
google_alternate_ad_url += "&page=" + Math.ceil(Math.random() * 5);
google_alternate_ad_url += "&locale=jp";
google_alternate_ad_url += "&BrowseNodeSearch=564624";

これで輸入盤ストアのベストセラー50位までのアイテムからランダムに拾えます(多分)。

てか、クリック数はそこそこなんだけど、まったく売れないすね。ま、公共広告がダサいのでこんなもの作っているだけなんですが。