設定した値で商品リストを表示する(モジュール作成用)
商品検索APIを利用し、あらかじめ設定したキーワード等で商品リストを表示するモジュールを作成するためのサンプル。
使用API | |
---|---|
構成環境 | Apache-2.2.10 + PHP-5.2.5 |
ダウンロード
サンプルご利用の際は、利用規約をご覧ください。利用規約は、ダウンロードパッケージ内のLICENSE.txtファイルに記載されています。
コード解説
ダウンロードしたアーカイブファイルを展開すると下記のようになります。
`-- sample6
|-- ItemSearchListModule
| |-- ItemSearchListModule.php
| `-- ItemSearchListModulePage.php
|-- LICENSE.txt
|-- README.txt
|-- common
| `-- common.php
`-- css
|-- default.css
`-- prototype.css
common.php
<?php
/** @mainpage
* Yahoo!ショッピングWeb APISDK共通関数
*/
/**
* @file
* @brief Yahoo!ショッピングWeb APISDK共通関数
*
* Yahoo!ショッピングWeb APISDKで、共通で使用する関数を集めたファイルです。
*
* PHP version 5
*
*/
/**
* @brief 特殊文字を HTML エンティティに変換する
*
* これは、htmlspecialchars()を使いやすくするための関数です。
* htmlspecialchars() http://jp.php.net/htmlspecialcharsより
* 文字の中には HTML において特殊な意味を持つものがあり、
* それらの本来の値を表示したければ HTML の表現形式に変換してやらなければなりません。
* この関数は、これらの変換を行った結果の文字列を返します。
*
* '&' (アンパサンド) は '&' になります。
* ENT_QUOTES が設定されている場合のみ、 ''' (シングルクオート) は '''になります。
* '<' (小なり) は '<' になります。
* '>' (大なり) は '>' になります。
* ''' (シングルクオート) は '''になります。
*
* echo h("<>&'\""); //<>&'"と出力します。
*
* @param string $str 変換したい文字列
*
* @return string html用に変換した文字列
*
*/
function h($str)
{
return htmlspecialchars($str, ENT_QUOTES);
}
/**
* 引数$paramからurlパラメータを生成します。
*
* 引数$paramからurlパラメータを生成します。
* キーを引数$param値をurlエンコードします。
* 値が""である場合はクエリに含めず、処理を飛ばします。
*
* @param array $param urlパラメータに含める文字列 キーにリクエストパラメータを、値にパラメータの値を入れます。
* $param = array(
* リクエストパラメータ=>パラメータの値
* );
*
* $urlparameter = buildQuery(array(
* "appid" => "<あなたのClient ID(アプリケーションID)>",
* "query" => "スニーカー",
* "category_id" => "",
* "hit" => 5
* ));
*
* echo $urlparameter; //appid=<あなたのClient ID(アプリケーションID)>&query=%A5%B9%A5%CB%A1%BC%A5%AB%A1%BC&category_id=&hit=5
*
* 上記の例では、category_idは値が「""」のためurlパラメータに含まれません。
*
* @return string URLエンコードされた文字列を返します。
*/
function buildQuery($param)
{
$tmp = array();
foreach($param as $key => $value){
$tmp [] = $key . "=" . rawurlencode($value);
}
return join("&", $tmp);
}
?>
ItemSearchListModule.php
<?php
/** @mainpage
* 商品検索リストモジュール
*/
/**
* @file
* @brief 商品検索リストモジュール
*
* 商品検索APIを利用し、指定したキーワードで商品を検索します。
* そしてその結果をhtmlに整形して表示します。
*
* PHP version 5
*/
require_once("../common/common.php");
/**
* @class
* @brief 指定したキーワードで商品を検索、表示
*
* このクラスは、商品検索APIを利用して、
* 引数に指定されたキーワードやその他の検索条件を使用して、APIにアクセスし、その結果をhtmlで表示します。
* phpのページに、数行のphpコードを書くことでブログパーツのように商品の検索結果を表示させることができます。
*/
class ItemSearchListModule
{
/**
* @brief 引数を元に商品検索APIにアクセスし、結果を表示
*
* 引数を元に商品検索APIにアクセスし、その結果をhtmlに整形して表示します。
* 引数$paramにリクエストパラメータ名=>値と書くことで検索条件を追加することができます。
* 指定できるパラメータの一覧は
* http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/itemsearch.html
* を参照してください。
*
* @param array $param apiにアクセスする際の検索条件を指定します。
*
* $param = array(
* "appid" => Client ID(アプリケーションID) //必須,
* "query" => 検索キーワード //必須,
* "category_id" => カテゴリID, //任意
* "affiliate_type"=>"アフィリエイトタイプ yid or vc",
* "affiliate_id" =>"アリフィリエイトIDを指定します",
* "sort" => "ソート順を指定します"
* );
*
* Yahoo! JAPANアフィリエイトサンプル
* new ItemSearchListModule(array(
* "appid" => "<あなたのClient ID(アプリケーションID)>",
* "query" => "スニーカー",
* "affiliate_type"=>"yid",
* "affiliate_id" =>"EOipIudsX6dXJlfi8JXmsCA-",
* "hits" => 3
* ));
* バリューコマースアフィリエイトサンプル
* new ItemSearchListModule(array(
* "appid" => "<あなたのClient ID(アプリケーションID)>",
* "query" => "スニーカー",
* "affiliate_type"=>"vc",
* "affiliate_id" =>"http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2219441&pid=874350257&vc_url=",
* "hits" => 3
* ));
*/
function __construct($param = array())
{
$results = array();
if ($param['query'] != "") {
$query4url = rawurlencode($param['query']);
try {
$url = "http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch?". buildQuery($param);
$xml = simplexml_load_file($url);
if ($xml["totalResultsReturned"] != 0) {
$results = $xml->Result->Hit;
}
} catch(Exception $e) {
}
}
$result['query'] = $param['query'];
$result["results"] = $results;
ItemSearchListModule::display($result);
}
/**
* @brief htmlを組み立てて表示
*
* 引数に指定された値からhtmlに整形して出力します。
*
* @param array $param html内で表示する値
*
* $param = array(
* "query" => string //検索キーワード,
* "results" => object //検索結果
* );
*/
function display($param = array())
{
$html = array();
$html []= "<div class=\"YahooShoppingAPISDK\">";
$html []= "<div class=\"ItemSearchListModule\">";
$html []= "<h1>「" . h($param['query']) . "」の検索結果</h1>";
foreach ($param["results"] as $result) {
$html []= "<div class=\"Item\">";
$html []= "<p><a href=\"" . h($result->Url) . "\"><img src=\"" . h($result->Image->Small) . "\" /></a></p>";
$html []= "<h2><a href=\"". h($result->Url) . "\">" . h($result->Name) . "</a></h2>";
if (!is_null($result->PriceLabel->SalePrice)) {
$html []= "<p class=\"Price\">". h($result->Price). "円</p>";
}
$html []= "</div>";
}
$html []= "</div>";
$html []= "</div>";
echo join("\n", $html);
}
}
?>
ItemSearchListModulePage.php
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<title>ショッピングデモサイト - 設定した値で商品リストを表示する(モジュール作成用)</title>
<link rel="stylesheet" type="text/css" href="../css/prototype.css"/>
</head>
<body>
<h1><a href="./ItemSearchListModulePage.php">ショッピングデモサイト - 設定した値で商品リストを表示する(モジュール作成用)</a></h1>
<?php
/** @mainpage
* 指定したキーワードで商品を検索、表示
*/
/**
* @file
* @brief ItemSearchListModule.phpを利用して、商品の検索結果を検索、表示
*
* ItemSearchListModule.phpを利用して、
* 指定したキーワードで商品を検索し,その結果をブログパーツ風に表示します。
*/
//ItemSearchListModule.phpを読み込み
include_once("./ItemSearchListModule.php");
/**
* ItemSearchListModule呼び出し
*
* 設定例
* $obj = new ItemSearchListModule(array(
* "appid" => Client ID(アプリケーションID) //必須,
* "query" => 検索キーワード //必須,
* "category_id" => カテゴリID, //任意
* "affiliate_type"=>"アフィリエイトタイプ yid or vc",
* "affiliate_id" =>"アリフィリエイトIDを指定します",
* "sort" => "ソート順を指定します"
* ));
*
* 指定できるパラメータの一覧は
* http://developer.yahoo.co.jp/shopping/itemsearch/V1/itemSearch.html
* を参照してください。
*
* パラメータを追加する場合は
* "リクエストパラメータ名" => "値"
* としてください。
*
* Yahoo! JAPANアフィリエイトサンプル
* new ItemSearchListModule(array(
* "appid" => "<あなたのClient ID(アプリケーションID)>",
* "query" => "スニーカー",
* "affiliate_type"=>"yid",
* "affiliate_id" =>"EOipIudsX6dXJlfi8JXmsCA-",
* "hits" => 3
* ));
* バリューコマースアフィリエイトサンプル
* new ItemSearchListModule(array(
* "appid" => "<あなたのClient ID(アプリケーションID)>",
* "query" => "スニーカー",
* "affiliate_type"=>"vc",
* "affiliate_id" =>"http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2219441&pid=874350257&vc_url=",
* "hits" => 3
* ));
*/
new ItemSearchListModule(array(
"appid" => "<あなたのClient ID(アプリケーションID)>",
"query" => "スニーカー",
"hits" => 3
));
?>
</body>
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
<a href="http://developer.yahoo.co.jp/about">
<img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17.gif" width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px"></a>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</html>