ブログトップ
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を見ると良いでしょう。