SOY CMS / SOY Shop

ブログトップ

SOY Shopプラグインの解説 検索モジュール

2014年03月06日

今回は検索モジュールを作成するために利用する

soyshop.search.phpという拡張ポイントについて見ていきます。

SOY Shopプラグインの解説 拡張ポイントについて




/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を見ると良いでしょう。