ブログトップ
SOY Shopプラグインの解説 検索モジュール
2014年03月06日
今回は検索モジュールを作成するために利用する
soyshop.search.phpという拡張ポイントについて見ていきます。
/soyshop/webapp/src/logic/plugin/extensions/soyshop.search.php
検索モジュールの拡張ポイントを見てみると、
class SOYShopSearchModule implements SOY2PluginAction{
private $page; //SOYShop_SearchPage
/**
* title text
*/
function getTitle(){}
/**
* @return html
*/
function getForm(){}
/**
* @return array<SOYShop_Item?
*/
function getItems($current, $limit){ return array(); }
/**
* @return number
*/
function getTotal(){ return 0; }
function execute($page){ }
function getPage() {
return $this->page;
}
function setPage($page) {
$this->page = $page;
}
}
getTitle、getForm、getItems、getTotalとexecute関数、
あとはgetterとsetter関数が用意されています。
上から順番に見ていくと、

サイト管理 > ページ設定 > 種類が検索結果ページの編集 > 検索モジュールを開いて、
getTitleで文字列を返すと、検索モジュールの設定のセレクトボックスに選択肢として追加されます。
商品検索フォームを設置する(1/3) | SOY Shopマニュアル
ここで選択したモジュールが

検索結果ページの表示の際に読み込まれます。
getFormは

このページのように、システムからフォームを出力したい際に利用し、
HTMLを返すことで表示されます。
この時、検索結果ページのテンプレートにcms:id="search_form"とタグを追加することで好きな箇所に表示できます。
検索結果はgetItemsで出力します。
function getItems($current, $limit){
$itemDao = SOY2DAOFactory::create("shop.SOYShop_ItemDAO");
$query = (isset($_REQUEST["q"])) ? $_REQUEST["q"] : "";
$query = mb_convert_encoding($query, "UTF-8", "auto");
$type = $_REQUEST["type"];
if(isset($query) && isset($type)){
switch($type){
case "name":
$itemDao->setLimit($limit);
$items = $itemDao->getByName($query);
break;
}
return $items;
}
}
getItems関数内で配列にSOYShop_Itemオブジェクトを格納したものを返すことで表示されますので、
SQL構文はこの関数の中に記載すると良いでしょう。
getTotal関数は検索のヒット件数を返すもので、
function getTotal(){
return 10;
}
上記のように処理が終わった後に数字を返します。
残りのexecute関数ですが、
バージョン1.13.4の時点では使用されていません。
この内容の詳細を確認したい方は、
検索モジュール(ID : common_search)のsoyshop.search.phpを見ると良いでしょう。

