デジットさんの生活便利サイトトップへ デジットさんのSmartyでAmazonECS(PHP)

トップページ > ホームページ作成 > PEARでAmazonECS

PHPのPEARを使った「AmazonECS」の応用例です。テンプレートエンジンのSmartyのループ表示を利用して商品を表示する方法です。ここでは、基本的な使い方だけお教えします。

Smartyを利用した表示

PEARでAmazonECS(2)の例を、テンプレートエンジンSmartyを使って実施してみました。今回は、「foreach」をつかって、検索した「amazon」の商品をあるだけループ表示してみました。Smartyを使えれば、応用が広がります。
以下、サンプルリストと説明を行います。

Amazon用テンプレートファイル

{foreach from=$lines item=item}から{/foreach}がループの部分です。「$lines」という名前の配列のデータがあるだけ繰返します。配列のデータは、「item=」で定義した名前で取り出します。例えば、{$item.am_url}は「item」という名前の「am_url」というインデックスにアクセルしています。「$lines」は、このテンプレートを使う実行ファイルのPHPで作成します。
このファイル名は、"amazon_loop.tpl"としました。指定するテンプレートのディレクトリ「template_dir」に置きます。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>PEAR Amazonウエブサービス(Smartyのループ表示)</title>
</head>
<body>
<div style="text-align:center">
{foreach from=$lines item=item}
<a href = "{$item.am_url}">
<img src ="{$item.am_img}" width ="{$item.am_wdth}" height="{$item.am_hght}" border="0"/><br/>{$item.am_ttle}</a><br/>
{$item.am_prc}<br/>
{/foreach}
</div>
</body>
</html>

Amazon用Smarty実行ファイル

PEARでAmazonECS(2)と変えたところだけ説明します。
「AmazonECS」から取得したデータを配列「$lines[] 」に格納します。格納した配列は、「assign("lines",$lines)」でテンプレートに引き渡します。ここが違うだけです。「display("amazon_loop.tpl")」で表示されます。
また、今回は直接「Smarty.class.php」を呼ばずに、テンプレートファイルのディレクトリなどを自分用にカスタマイズした「smarty_setup.php」を利用しました。この定義の仕方は、Smartyのカスタマイズで説明します。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>PEAR Amazonウエブサービス(商品検索)</title>
</head>
<body>
<?php
$search = 'Books'; //サーチインデックス
$key_w = 'PHP'; //キーワード
$brows_n = 466298 ; //ブラウズノード
$sort_i = 'salesrank'; //ソート条件
$i_page = 1; //表示するページ
//PEAR::Amazon
require_once 'Services/AmazonECS4.php';
//PEAR::Cache キャッシュ
require_once 'Cache.php';
$amazon = new Services_AmazonECS4('自分のAccess Key ID','自分のAssociate ID');
//Access Key ID,Associate ID
$amazon -> setLocale('JP');
$amazon -> setCache('file',array('cache_dir' => '/ここにキャッシュディレクトリへのフルパスを記載/cache/'));
$amazon -> setCacheExpire(3600); //キャッシュの保持時間(秒)
$options = array(
'Keywords'=> $key_w ,
'BrowseNode' => $brows_n,
'Sort' => $sort_i ,
'ResponseGroup'=>'Small,Images,ItemAttributes,//情報種類/画像/価格
'ItemPage' => $i_page ,
);
//Accessに接続しデータを取得
$result = $amazon -> ItemSearch ( $search,$options );
if (PEAR::isError($result)){
die ( $result -> message );
}
for ( $i = 0 ; $i <= (count($result['Item'])-1) ; $i++ ){
//画像取得
$img = null;
if (isset($result['Item'][$i]['MediumImage'])){
$img = $result['Item'][$i]['MediumImage'];
}
$src = $img ? $img['URL'] : 'noimg.jpg' ;
$width = $img ? $img['Width'] ['_content']: 100;
$height = $img ? $img['Height'] ['_content']: 100;
//結果を配列に格納
$lines[] = array(
"am_url"=>htmlspecialchars($result['Item'][$i]['DetailPageURL']),
"am_img"=>htmlspecialchars($src),
"am_wdth"=>htmlspecialchars($width),
"am_hght"=>htmlspecialchars($height),
"am_ttle"=>htmlspecialchars($result['Item'][$i]['ItemAttributes']['Title']),
"am_prc"=>htmlspecialchars($result['Item'][$i]['ItemAttributes']['ListPrice']['FormattedPrice'])
);

}
//Smartyで結果表示
require_once("smarty_setup.php");//Smartyのカスタムセット
$smarty = new Smarty_GuestBook();
$smarty -> assign("lines",$lines);
$smarty -> display("amazon_loop.tpl");

?>
</body>
</html>

これで、Services_AmazonのECS4のデータをSmartyを使って表示することが出来ました。
レンタルサーバーのロリポップでは、動作確認できています。

AmazonECSの参考サイト

「AmazonECS」の詳しい情報は、次が参考になります。

  1. WebサービスをAmazonで知る――ECS 4.0でアフィリエイト(前編)
  2. WebサービスをAmazonで知る――ECS 4.0でアフィリエイト(後編)
  3. Amazon Web Services Developer Connection Japanese

ホームページを公開するレンタルサーバーは、 ロリポップ! がお薦め、 PHP5を使うならPHP5から選ぼう。

関連ページ

ホームページ作成

アフィリエイト

デジットさんのホームページ入門に移行中

スポンサード リンク

Amazon.co.jpアソシエイト:
PHP&プログラミング

売れている順 新刊順

:%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%20php :php2_  :5

とことん!ホームページホームページ入門役立つサイトデジットさんのリストラ日記仮福真琴の精神科医はうそだらけ

2005-2010 Copyright © Digit-01 All Rights Reserved.