SOY Shopプラグインの解説 商品一覧
2014.06.20
商品一覧ページでは、カテゴリ、カスタムフィールドとモジュール(その他)による括りの商品一覧を表示することができます。
モジュールはカテゴリ等では表現できない商品一覧ページを表示するために拡張ポイントを利用するもので、
soyshop.item.list.phpという拡張ポイントが使用されます。
さっそく、soyshop.item.list.phpを見てみると、
(/soyshop/webapp/src/logic/plugin/extentions/soyshop.item.list.php)
class SOYShopItemListBase implements SOY2PluginAction{
private $moduleId;
private $pageId;
private $isUse = false;
/**
* @return string
*/
function getLabel(){
return $this->moduleId;
}
/**
* @return array
*/
function getItems($pageObj, $offset, $limit){
}
/**
* @return number
*/
function getTotal($pageObj){
}
/**
* @return string
*/
function getForm(){
}
function doPost(){
}
function getModuleId() {
return $this->moduleId;
}
function setModuleId($moduleId) {
$this->moduleId = $moduleId;
}
function getPageId(){
return $this->pageId;
}
function setPageId($pageId){
$this->pageId = $pageId;
}
function isUse(){
return $this->isUse;
}
function setIsUse($isUse){
$this->isUse = $isUse;
}
}
上記のようにいくつかの関数が用意されています。
順不同ですが、各メソッドを見ていくと、
getItems()とgetTotal()は公開側の商品一覧ページで使用します。
getItemsは
function getItems($pageObj, $offset, $limit){
//商品オブジェクトが格納された配列
$items = array(new SOYShop_Item());
return $items;
}
このように関数内で何らかの処理を行い取得した商品オブジェクトが格納された配列を返すことで、

取得した商品分で商品一覧ページを作成します。
getTotal()はページ送りの際に使うもので、ページで設定した表示件数関係なく、条件を満たす商品件数を返すことでページ送りが実装できます。
function getTotal($pageObj){
//何らかの処理で条件を満たす商品件数を取得
$count = 40;
return $count;
}
数字で返します。
次は管理画面側で

商品一覧ページで商品一覧ページの設定を開き、商品一覧の種別でその他を選ぶと、モジュール名を選択してくださいという欄が現れます。
この時、getLabel()の値がモジュール名のセレクトボックスに使われ、getForm()で返したHTMLがモジュールの詳細設定用のフォームになります。
更新を押すと、doPost関数が読み込まれるので、モジュールに詳細設定を付けたい場合は、getForm()とdoPost()を活用しましょう。
仕様の確認はカテゴリカスタムフィールド商品一覧モジュールのコードを読むと良いです。
(soyshop/webapp/src/module/plugins/item_list_category_customfield)