SOY CMS / SOY Shop

ブログトップ

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

2014年02月12日

カートのカスタマイズを行うにあたって、

標準のページ数ではなく、運営によっては増やしたり減らしたりしたいという要望があると思います。


今回はページ数の調整についての説明を記載します。





標準のカートでは、ページの構成は下記のようになっています。

Cart01 : カートに入れた商品の確認とログイン

Cart02 : お客様情報の入力

Cart03 : 支払いと配送方法の選択

Cart04 : 入力内容の確認と注文決定

Cart05 : クレジットカードの情報等の入力ページ

Complete : サンクス

Error : 何らかのエラーがあった場合に表示される

Maintenance : サイトのメンテナンス時に表示する


たとえば、

支払いと配送方法は常に一定で、Cart02でまとめて表示するからCart03はいらないということがあるとします。


その場合はCart03Page.htmlとCart03Page.class.phpを削除してしまい、

Cart04をCart03にリネーム、

Cart04Page.class.phpのクラス名とコンストラクタの関数名を

Cart04PageからCart03Pageにすれば動きます。


class Cart04Page extends MainCartPageBase{
	
	function Cart04Page(){
		WebPage::WebPage();
	}
}

これを


class Cart03Page extends MainCartPageBase{
	
	function Cart03Page(){
		WebPage::WebPage();
	}
}

このように変更します。


このようにカスタマイズすると、

Cart03Pageの次はCompletePageになるので、

Cart03Pageの処理が終わった後にCart04PageではなくCompletePageに遷移させなければなりません。


ページの遷移周りの処理は

doPost関数の末尾らへんにある


$cart = CartLogic::getCart();

if(isset($_POST["next"]) || isset($_POST["next_x"])){
	$cart->setAttribute("page", "Complete");
	soyshop_redirect_cart();
}

if(isset($_POST["prev"]) || isset($_POST["prev_x"])){
	$cart->setAttribute("page", "Cart03");
	soyshop_redirect_cart();
}

このように処理の末尾にCartLogicのattributeでpageに次もしくは前のページのカート名(Page.class.phpは除く)を入れた後にsoyshop_redirect_cart();を行うことでページの遷移をさせることができます。


この時に入れる値を間違えないようにしましょう。


ちなみに$cart->setAttribute("page", "****");の****のところの文字列は自由なので、

Cart03ページを抜いたままにして、戻る時だけ$cart->setAttribute("page", "Cart03");から$cart->setAttribute("page", "Cart02");にするという対処でも良いです。





ページを増やす際も同様で、

Cart03とCart04の間にページを新しいページを追加する際、

Cart04を追加した後、それ以降のページ番号を一つずらして、$cart->setAttribute("page", "****");で合わせても良いですし、


CartAddPage.class.phpというページを追加して、


class CartAddPage extends MainCartPageBase{
	
	function CartAddPage(){
		WebPage::WebPage();
	}
}

にして、

画面遷移の際に$cart->setAttribute("page", "CartAdd");と指定するということでも良いです。