SOY CMS / SOY Shop

ブログトップ

カートに商品を入れる

2014年03月30日

前回まででカートページの表示周りを説明しました。

カートページを表示する1

カートページを表示する2


今回はカートに商品を入れる処理について見ていきたいと思います。






商品詳細ページでカートに入れるボタンを押すと、



カートページに商品が表示されます。


商品ごとに設置されているカートに入れるボタンを押すとカートに入りますが、

今回はボタンを押してからカートに入るまでの流れを見ていきます。



始めにカートに入れるボタンのHTMLを見ると、

同梱テンプレートではform型を利用しており、コードは下記のようになります。


<form action="/shop/cart/operation?a=add&count=1&item=1" method="post" >
	<input type="hidden" name="soy2_token" value="トークン" />

	<!-- 途中省略 -->

	<input type="submit" value="カートに入れる"></p>
</form>

もう一つのリンク型では、

<a href="/shop/cart/operation?a=add&count=1&item=1">カートに入れる</a>

となります。


どちらも共通しているのが、カートページのURLの後にoperationとGETで?a=add&count=1&item=1の値を指定しています。

このURLを元にページコントローラの処理を見ていきましょう。




カートページを開く場合、

/soyshop/webapp/src/base/SOYShopSiteController.class.phpでカートページを表示する際にexcuteCartApplicationが実行されますが、処理を詳しく見ると


function executeCartApplication($args){

	$webPage = SOY2HTMLFactory::createInstance("SOYShop_CartPage", array(
		"arguments" => array(SOYSHOP_CURRENT_CART_ID)
	));

	//カートに商品を入れる処理はここから
	if(count($args) > 0 && $args[0] == "operation"){
		$webPage->doOperation();
		exit;
	}else{
		//カートの表示に関する処理
	}
}

URLでcartの後にoperationがある場合は$webPage->doOperation()が呼びだれます。


doOperationは/soyshop/webapp/src/base/site/pages/SOYShop_CartPage.class.phpの13行目付近にあり、


function doOperation(){
	$this->checkSSL();

	SOY2::import("base.cart.cart", ".php");
	header("Location: ". $this->getCartURL());
	exit;
}

/soyshop/webapp/src/base/cart/cart.phpを読み込んだ後にカートページにリダイレクトします。

(checkSSLは管理画面で設定したカートページをhttpsで表示するかの処理になります。)


cart.phpを見ると


if(isset($_REQUEST["a"])) {

	SOYShopPlugin::load("soyshop.item.option");
	$cart = CartLogic::getCart();

	//商品オプションの拡張ポイントの処理は省略
	
	//カートに入っている商品に変更がある場合は、選択されているモジュールをクリアする
	$cart->clearModules();

	switch($_REQUEST["a"]) {
		case "add":

			//カートに商品を入れる関係の処理
			break;
		
		case "remove":

			//カートに入れた商品をカートから削除する処理
			break;
		
		case "update":

			//カートに入れた商品の個数を変更する処理
			break;
		
		case "shoooot";//カートを一つの商品で満たす

			//開発用の処理
			break;
	}
	
	//消費税の計算とモジュールの登録
	if(SOYSHOP_CONSUMPTION_TAX_MODE){
		//外税(プラグインによる処理)
		$cart->setConsumptionTax();
	}elseif(SOYSHOP_CONSUMPTION_TAX_INCLUSIVE_PRICING_MODE){
		//内税(標準実装)
		$cart->setConsumptionTaxInclusivePricing();
	}else{
		//何もしない
	}

	$cart->save();
}

//use cart id
$cartId = soyshop_get_cart_id();
include(SOY2::RootDir() . "cart/" . $cartId . "/cart.php");

詳しい処理は端折りますが、カートに入れる際にURLの末尾に追加したaの値はカートでのアクションの指示で、

a=addはカートに商品を入れる処理になります。

countはカートに入れる時の個数の指定で

itemはカートに入れる商品のIDになります。


商品オプションに関しては下記の記事をご覧ください。

SOY Shopプラグインの解説 アイテムオプション


aに入れる他の処理は



カート内の商品の操作の際に使います。


カートに商品を入れる処理が終わったら、$cart->save()でセッションに保存して、

/soyshop/webapp/src/cart/bryon/cart.phpを開いて、

(bryonは設定したカートID)


$cart = CartLogic::getCart();
$cart->setAttribute("page", null);
$cart->save();

カートページの開くページの設定を初期化して、/shop/cartにリダイレクトします。

カートページの指定の詳細は下記の記事をご覧ください。

カートのカスタマイズ カートのページ数の調整


これでカートに商品を入れる処理の一通りの流れは終了です。