ショッピングサンプルコード

カテゴリ別売り上げランキングを表示する(モジュール作成用)

使用API

ショッピング カテゴリランキング

構成環境 Apache-2.2.10 + PHP-5.2.5

カテゴリランキングAPIを利用し、あらかじめ設定したカテゴリIDの売り上げランキングを表示するモジュールを作成するためのサンプル。

ダウンロード

サンプルご利用の際は、利用規約をご覧ください。利用規約は、ダウンロードパッケージ内のLICENSE.txtファイルに記載されています。

ダウンロードはこちら (ダウンロードサイズ:約5.0KB)

コード解説

ダウンロードしたアーカイブファイルを展開すると下記のようになります。

`-- sample7
    |-- CategoryRankingModule
    |   |-- CategoryRankingModule.php
    |   `-- CategoryRankingModulePage.php
    |-- LICENSE.txt
    |-- README.txt
    |-- common
    |   `-- common.php
    `-- css
        |-- default.css
        `-- prototype.css

CategoryRankingModule.php

<?php
/** @mainpage
 *  カテゴリランキング表示モジュール
 */

/**
 * @file
 * @brief カテゴリランキング表示モジュール
 *
 * カテゴリーランキングAPIを利用して、指定したカテゴリのランキング結果を表示します。
 *
 * PHP version 5
 */

require_once("../common/common.php");

/**
 * @class
 * @brief カテゴリランキング表示モジュール
 *
 * カテゴリーランキングAPIを利用して、指定したカテゴリのランキング結果を表示する
 * 引数を変えることで、最大何位まで表示するかを設定できます。
 * phpのページに、数行のphpコードを書くことでブログパーツのように
 * ランキングを表示させることができます。
 *
 */
class CategoryRankingModule
{
    /**
     * @brief 引数を元にカテゴリランキングAPIにアクセスし、結果を表示
     *
     * 引数を元にリクエストURLを作成し、カテゴリランキングAPIにアクセスして、その結果を表示します。
     * 引数$paramにリクエストパラメータ名=>値と書くことでAPIへの問い合わせ条件を追加することができます。
     *
     * 指定できるパラメータの一覧は
     * http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/categoryranking.html
     * を参照してください。
     *
     * @param array $param apiにアクセスする際の問い合わせ条件を指定します。
     *
     * $param = array(
     *     "appid"          => string アプリケーションID //必須,
     *     "category_id"    => int カテゴリーID //必須,
     *     "rank"           => int 表示する順位 デフォルトは5位まで 最大20位まで,
     *     "affiliate_type" => string アフィリエイトタイプ yid or vc,
     *     "affiliate_id"   => string アリフィリエイトIDを指定します,
     * );
     *
     * Yahoo! JAPANアフィリエイトサンプル
     * new ItemSearchListModule(array(
     *                    "appid"          => "<あなたのアプリケーションID>",
     *                    "category_id"    => "2495",
     *                    "rank"           => "5",
     *                    "affiliate_type" => "yid",
     *                    "affiliate_id"   => "EOipIudsX6dXJlfi8JXmsCA-",
     * ));
     * バリューコマースアフィリエイトサンプル
     * new ItemSearchListModule(array(
     *                    "appid"         => "<あなたのアプリケーションID>",
     *                    "category_id"    => "2495",
     *                    "rank"           => "5",
     *                    "affiliate_type"=>"vc",
     *                    "affiliate_id"  =>"http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2219441&pid=874350257&vc_url=",
     * ));
     */
    function __construct($param = array())
    {
        $results = array();
        $param['category_id'] = ctype_digit($param['category_id'])? $param['category_id'] : 1;
        $rank = ctype_digit($param['rank']) && ($param['rank'] <= 20)? $param['rank']-1:4;
        $url = "http://shopping.yahooapis.jp/ShoppingWebService/V1/categoryRanking?" . buildQuery($param);
        try {
            $xml = simplexml_load_file($url);
            if ($xml["totalResultsReturned"] != 0) {
                $results = $xml->Result->RankingData;
            }
        } catch (Exception $e) {
            
        }
        $result['rank'] = $rank;
        $result['results'] = $results;
        $result['category_id'] = $param['category_id'];
        CategoryRankingModule::display($result);
    }

    /**
     * @brief htmlを組み立てて表示
     *
     * 引数に指定された値からhtmlに整形して出力します。
     *
     * @param array $param  html内で表示する値
     * 
     * $param = array(
     *     "category_id" => int //カテゴリーID,
     *     "results" => object //検索結果
     * );
     */
    function display($param = array())
    {
        $html = array();
        $html []= "<div class=\"YahooShoppingAPISDK\">"; 
        $html []= "<div class=\"CategoryRankingModule\">";
        $html []= "<h1>catoery_id 「" . h($param['category_id']) . "」のランキング</h1>";
        $i = 0;
        foreach ($param["results"] as $result) {
            $html []= "<div class=\"Item\">";
            $html []= "<p><a href=\"" . h($result->Url). "\"><img src=\"".  h($result->Image->Small). "\" /></a></p>";
            $rank = "";
            if (!is_null($result["rank"])) {
                $rank = h($result["rank"]) . "位: ";
            }
            $html []= "<h2><a href=\"" . h($result->Url) ."\">". $rank . h($result->Name). "</a></h2>";
            $html []= "</div>";
            if ($i >= $param["rank"]) {
                break;
            }
            $i++;
        }
        $html []= "</div>";
        $html []= "</div>";
        echo join("\n", $html);
    }
}
?>

CategoryRankingModulePage.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="./CategoryRankingModulePage.php">ショッピングデモサイト - カテゴリ別売り上げランキングを表示する(モジュール作成用)示</a></h1>

<?php
/** @mainpage
 *  カテゴリランキングを表示
 */

/**
 * @file
 * @brief カテゴリランキングを表示
 *
 * CategoryRankingModule.phpを利用して、カテゴリランキングを表示します。
 * カテゴリランキングAPIに問い合わせた結果をhtmlに埋め込んで表示します。
 * 引数を変えることで、最大何位まで表示するかを設定できます。
 */
   
//CategoryRankingModule.phpを読み込み
include_once("./CategoryRankingModule.php");
   
/**
 * CategoryRankingModuleを呼び出し
 * 設定例
 * $obj = new CategoryRankingModule(array(
 *     "appid"         => アプリケーションID //必須,
 *     "category_id" => int カテゴリーID //必須,
 *     "rank" => int 表示する順位 デフォルトは5位まで 最大20位まで,
 *     "affiliate_type"=>"アフィリエイトタイプ yid or vc",
 *     "affiliate_id"  =>"アリフィリエイトIDを指定します",
 * ));
 * Yahoo! JAPANアフィリエイトサンプル
 * new CategoryRankingModule(array(
 *                    "appid"          => "<あなたのアプリケーションID>",
 *                    "category_id"    => "2495",
 *                    "rank"           => "5",
 *                    "affiliate_type" => "yid",
 *                    "affiliate_id"   => "EOipIudsX6dXJlfi8JXmsCA-"
 * ));
 * バリューコマースアフィリエイトサンプル
 * new CategoryRankingModule(array(
 *                    "appid"          => "<あなたのアプリケーションID>",
 *                    "category_id"    => "2495",
 *                    "rank"           => "5",
 *                    "affiliate_type" => "vc",
 *                    "affiliate_id"   => "http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2219441&pid=874350257&vc_url="
 * ));
 */
new CategoryRankingModule(array("appid" => "<あなたのアプリケーションID>",
                          "category_id" => "2495",
                          "rank" => "5"
                          )
                    );
?>
    </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>

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 の表現形式に変換してやらなければなりません。
 *   この関数は、これらの変換を行った結果の文字列を返します。
 *
 *   '&' (アンパサンド) は '&amp;' になります。
 *   ENT_QUOTES が設定されている場合のみ、 ''' (シングルクオート) は '&#039;'になります。
 *   '<' (小なり) は '&lt;' になります。
 *   '>' (大なり) は '&gt;' になります。
 *   ''' (シングルクオート) は '&#039;'になります。
 *
 * echo h("<>&'\""); //&lt;&gt;&amp;&#039;&quotと出力します。
 *
 * @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" => "<あなたのアプリケーションID>",
 *                           "query" => "スニーカー",
 *                           "category_id" => "",
 *                           "hit" => 5
 *                            ));
 * 
 * echo $urlparameter; //appid=<あなたのアプリケーション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);
}
?>

このページのトップへ