Article

COREBlogの各エントリーにAWSを貼り付ける

※ 商品リンクから購入されると少額の報酬が発生することがあります。

amazonのwebservice(以下AWS)を使うPluginsがないかと探していたところ、COREBlogAWSPlugin とういのを 見つけた

このプラグインは、各エントリに対してamazonのASINを任意の個数設定をしてエントリ毎に表示をするというもの。

よそのサービスで、ページをパースした結果に基づいてAWSの検索結果を返してくれるというものがあったが、なんだかコンテンツ以外の場所の結果が利用されているのではないかという感じでイマイチ(COREBlogには対応していないためだと思われる)だった。

内容に即した物を表示したいという欲求を満たしてくれるCOREBlogAWSPlugin。早速入れてみた。

  • プラグインをダウンロード する。

  • ZopeのProductsディレクトリに展開したファイル群(ディレクトリ毎)を配置

  • Zopeインスタンスを再起動

  • COREBlogの直下の「contents」タブをクリック、COREBlogAWSPluginを追加。

    IDは自動で降られるのでいじらず。 Titleはどうでもいいので、どうでもいい。

  • 追加されたCOREBlogAWSPluginを選択すると、現在のエントリ一覧が表示される。

    まずは、settingタブをクリックして必要項目を入力。

    assosiate ID: amazonのアフィリエイトを申し込んだときにもらったもの(eg everes-22)
    Developer Token: amazonのWebServiceを申し込んだときにもらったもの(eg 1X2XXXXXXX)
    Server URL: http://xml.amazon.co.jp/onca/xml3
    locale: jp
    charset: COREBlogのものにあわせる
    type: よくわからないのでheavyを選んだ
    lifetime(sec): 商品の価格を表示する場合は1時間に一回はキャッシュをクリアする必要がある(規約)ようなので、よくわからなければ 3600
  • 再びCOREBlog直下のcontentsタブをクリック、DTMLMethodを追加。

    IDは何でも良いが、aws_viewとした。名前も何でも良い。

  • 追加されたaws_viewを編集( Polone スキンを使っているので、テーブルを使用しています)

    <dtml-in "aws_plugin.getAsin(id)">
      <dtml-with "aws_plugin.getDetail(_['sequence-item'])" mapping>
        <dtml-try>
          <br><table><tr><td>
            <dtml-if hasImage><a href="<dtml-var url>"><img style="text-align:left" src="<dtml-var ImageUrlSmall>" border="0"></a></dtml-if>
          </td><td>
            <a href="<dtml-var url>"><strong><dtml-var ProductName></strong></a>[<dtml-var Catalog>]<br><dtml-if Authors>
            <dtml-if "isinstance(Authors['Author'],str)">
              <dtml-var "Authors['Author']"><br>
            <dtml-else>
              <dtml-var "'/'.join(Authors['Author'])" missing=""><br>
            </dtml-if>
            <dtml-elif Artists>
            <dtml-if "isinstance(Artists['Artist'],str)">
            <dtml-var "Artists['Artist']"><br>
            <dtml-else>
            <dtml-var "'/'.join(Artists['Artist'])" missing=""><br></dtml-if></dtml-if></td></tr></table>
            <dtml-except>
            <dtml-var "aws_plugin.getDetail(_['sequence-item'])">
        </dtml-try>
      </dtml-with>
    </dtml-in>
  • cssを設定します

    COREBlog直下にcssというディレクトリがあるので、そのなかにあるbase_cssを開き、最後に下記のようなcssを追加します。

    /* aws_plugin */
    .amazon{ border: 1px solid #CCC; background: white; color: black; float: right; padding: 1em; margin : 0 0 1em 0.5em; width: 300px; clear: all; }
  • あとは、COREBlog直下のentry_bodyの好きな位置に挿入すれば準備は完了です。

    わたしは、本文が終わった直後のPost情報前に置きました(<dtml-var aws_view>だけをどこかに配置)。

    ------ snip
    <dtml-var aws_view>
      </dtml-if>
      <div class="posted"> Posted by <dtml-var author>
    ------ snipここまで
  • いよいよ、対象の商品の選択です。

    amazonで商品を検索して、商品をクリックした際のURLに「ASIN/0764548573/qid=」という部分があります。このURLの07645485 73の部分がASINです。

    COREBlog直下にあるaws_pluginをクリックすると出てくるエントリの一覧からアフィリエイトを追加したいエントリを選択します。 入力フィールド(テキストエリア)がありますので、関連する商品分のASINを改行で区切って入力しましょう。

Prev Entry

Next Entry