楽天市場の商品において、キーワードによる商品検索をすることで、楽天市場の「アフィリエイト商品のHTML」を作成する
楽天市場商品検索APIを使用して、
楽天市場の商品において、キーワードによる商品検索をすることで、楽天市場の「アフィリエイト商品のHTML」を作成する。
上記の処理を行うPHPソースコードを解説しています。
楽天市場の商品において、キーワードによる商品検索をすることで、楽天市場の「アフィリエイト商品のHTML」を作成する
public static function makeHTMLOfIchibaItemSearch(
URLInfo $urlInfo,
CommonRESTParameter $commonParameter,
RESTParameter $restParameter,
SearchOption $searchOption,
ItemHTMLOption $itemHTMLOption
) {
$itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);
$itemsHtml = ItemSearchOperation::makeItemsHTML($urlInfo, $itemHTMLOption, $itemsHTMLInfoMaker);
return $itemsHtml;
}
makeHTMLOfIchibaItemSearch()関数は、
楽天市場に対して商品検索を行い、楽天市場の「アフィリエイト商品のHTML」を作成する関数です。
楽天市場の商品に対して、キーワードで商品検索を行います。
その検索結果で得た商品情報を元に、楽天市場の「アフィリエイト商品のHTML」を作成します。
作成された、楽天市場の「アフィリエイト商品のHTML」を、$itemsHtml変数に代入します。
その$itemsHtml変数を、return文によって返します。
現在のところ、楽天市場商品検索APIだけを使用して検索しています。
よって、楽天市場というカテゴリに対して、商品検索を行なっています。
商品検索を行うカテゴリを、特定していません
上記ソースコードでは、商品検索を行うカテゴリを場合分けして、特定していません。
例えば、楽天ブックス総合検索APIを使って、本という特定のカテゴリに対して商品検索する、という処理はありません。
もしも、商品検索を行うカテゴリを特定する場合は、上記ソースコードにおいてswitch文を使って、場合分けすることになります。
商品検索を行うカテゴリを場合分けするPHPソースコードについて、下書き。
public static function makeHTMLOfIchibaItemSearch(
URLInfo $urlInfo,
CommonRESTParameter $commonParameter,
RESTParameter $restParameter,
SearchOption $searchOption,
ItemHTMLOption $itemHTMLOption
) {
中略
switch ( 商品検索を行うカテゴリ ) {
case 楽天市場 :
楽天市場商品検索APIを使用する。
楽天市場に対して商品検索を行い、楽天市場の「アフィリエイト商品のHTML」を作成する。
break;
case 楽天ブックス :
楽天ブックス総合検索APIを使用する。
楽天ブックスに対して商品検索を行い、楽天市場(楽天ブックス)の「アフィリエイト商品のHTML」を作成する。
break;
default :
throw new IllegalArgumentException ( "無効な商品検索を行うカテゴリ" );
}
以下省略
}
現在のところ、商品検索を行うカテゴリは、楽天市場だけです。
楽天ブックスというカテゴリに対して商品検索する、という処理を作成していません。
以上より、makeHTMLOfIchibaItemSearch()関数は、3行のプログラムコードとなっています。
今後、商品検索を行うカテゴリに対して、switch文を使って場合分けしないなら、
makeHTMLOfIchibaItemSearch()関数を削除できます。
3行のプログラムコードの処理は、他のクラスの関数内に移動できます。
RakutenAffiliateクラスのmakeHTML()関数内に移動できます。
3行のプログラムコードの処理を、RakutenAffiliateクラスのmakeHTML()関数内に移動したPHPソースコードについて、下書き。
class RakutenAffiliate
{
public static function makeHTML(ShortcodeAttribute $shortcodeAttribute)
{
中略
$affiliateHTML;
$operation = $searchOption->getOperation();
switch ($operation) {
case SearchParagraphUtils::ICHIBA_ITEM_SEARCH_OPERATION:
// 現時点では、Operation="IchibaItemSearch"で、楽天市場商品をキーワード検索する処理だけ行う。
$itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);
$affiliateHTML = ItemSearchOperation::makeItemsHTML($urlInfo, $itemHTMLOption, $itemsHTMLInfoMaker);
break;
default:
throw new IllegalArgumentException("無効なオペレーション:" . $operation);
}
return $affiliateHTML;
}
}
※関連記事:キーワードによる商品検索で、楽天市場の「アフィリエイト商品のHTML」を作成する、IchibaItemSearchオペレーションで、楽天市場の「アフィリエイト商品のHTML」を作成する。
楽天市場商品のHTMLに関する情報を作成するクラスについて、インスタンス変数を用意する
public static function makeHTMLOfIchibaItemSearch(
URLInfo $urlInfo,
CommonRESTParameter $commonParameter,
RESTParameter $restParameter,
SearchOption $searchOption,
ItemHTMLOption $itemHTMLOption
) {
$itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);
以下省略
}
RakutenItemsHTMLInfoMakerクラスは、楽天市場商品のHTMLに関する情報を作成するクラスです。
このRakutenItemsHTMLInfoMakerクラスには、ItemsHTMLInfoMakerインターフェースが適用されています。
ItemsHTMLInfoMakerインターフェースでは、以下の三つのメソッドを宣言しています。
ItemsHTMLInfoMakerインターフェースのメソッド宣言 | ItemsHTMLInfoMakerインターフェースのメソッドの機能 |
---|---|
requestItemSearch() | 何かに対して商品検索を行い、「商品の検索結果」を得る。 |
makeItemArray() | 取得した「商品の検索結果」から、「当プラグイン用の商品情報の配列」を作成する。 |
makeUniqueText() | キーワードによる商品検索の処理に対応する、一意な文字列を作成する。 一意な文字列は、「当プラグイン用の商品情報の配列」などをキャッシュに保存する際、そのキャッシュを識別する識別子を作成するために利用される。 |
よって、RakutenItemsHTMLInfoMakerクラスでは、上記の三つのメソッドを、楽天市場のアフィリエイト商品に関する処理に対応させて、実装することになります。
実装する必要があるメソッド | メソッドの機能 |
---|---|
requestItemSearch() | 楽天市場商品検索APIを使用して、楽天市場に対して商品検索を行い、「楽天市場商品の検索結果」を得る。 |
makeItemArray() | 取得した「楽天市場商品の検索結果」から、「当プラグイン用の商品情報の配列」作成する。 |
makeUniqueText() | 楽天市場における、キーワードによる商品検索の処理に対応する、一意な文字列を作成する。 一意な文字列は、「当プラグイン用の商品情報の配列」などをキャッシュに保存する際、そのキャッシュを識別する識別子を作成するために利用される。 |
汎用的な「アフィリエイト商品のHTML」を作成する関数で、楽天市場の「アフィリエイト商品のHTML」を作成する
$itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);
$itemsHtml = ItemSearchOperation::makeItemsHTML($urlInfo, $itemHTMLOption, $itemsHTMLInfoMaker);
ItemSearchOperation::makeItemsHTML()関数は、汎用的な(一般的な)「アフィリエイト商品のHTML」を作成する関数です。
上記の関数は、楽天市場の「アフィリエイト商品のHTML」を作成する場合に、対応していません。
このような場合、
ItemsHTMLInfoMakerインターフェースを適用したRakutenItemsHTMLInfoMakerクラスを用意することで、
ItemSearchOperation::makeItemsHTML()関数を、使用できます。
そして、楽天市場の「アフィリエイト商品のHTML」を作成できます。
※関連記事:全ての検索カテゴリにおいて、キーワードによる商品検索をすることで、アマゾンの「アフィリエイト商品のHTML」を作成する、汎用的なメソッドを呼び出すために、ItemsHTMLInfoMakerインターフェースを利用する。
KeywordSearchOperation.phpのソースコード
<?php
namespace goodsmemo\rakuten;
use goodsmemo\network\URLInfo;
use goodsmemo\rakuten\CommonRESTParameter;
use goodsmemo\rakuten\RESTParameter;
use goodsmemo\rakuten\SearchOption;
use goodsmemo\rakuten\RakutenItemsHTMLInfoMaker;
use goodsmemo\item\ItemSearchOperation;
use goodsmemo\item\html\ItemHTMLOption;
require_once GOODS_MEMO_DIR . "network/URLInfo.php";
require_once GOODS_MEMO_DIR . "rakuten/CommonRESTParameter.php";
require_once GOODS_MEMO_DIR . "rakuten/RESTParameter.php";
require_once GOODS_MEMO_DIR . "rakuten/SearchOption.php";
require_once GOODS_MEMO_DIR . "rakuten/RakutenItemsHTMLInfoMaker.php";
require_once GOODS_MEMO_DIR . "item/ItemSearchOperation.php";
require_once GOODS_MEMO_DIR . "item/html/ItemHTMLOption.php";
class KeywordSearchOperation
{
public static function makeHTMLOfIchibaItemSearch(
URLInfo $urlInfo,
CommonRESTParameter $commonParameter,
RESTParameter $restParameter,
SearchOption $searchOption,
ItemHTMLOption $itemHTMLOption
) {
$itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);
$itemsHtml = ItemSearchOperation::makeItemsHTML($urlInfo, $itemHTMLOption, $itemsHTMLInfoMaker);
return $itemsHtml;
}
}