ブログトップ
SOY Shopプラグインの解説 アイテムオプション
2014年02月14日
今回は拡張ポイントのsoyshop.item.option.phpを見ていきたいと思います。
拡張ポイントの詳しい説明は下記の記事をご覧ください。
商品オプションプラグインではsoyshop.item.option.phpのファイルを読み込んでいます。
item.optionはカートに入れた商品に追加で情報を加えられ、
注文後にも商品に情報を付けたまま保存されます。
/soyshop/webapp/src/logic/plugin/extensions/soyshop.item.option.phpを開くと
class SOYShopItemOptionBase implements SOY2PluginAction{ function clear($index, CartLogic $cart){ } function compare($index, CartLogic $cart){ } function doPost($index, CartLogic $cart){ } function onOutput($htmlObj, $index){ } function order($index){ } function display($item){ } function edit($key){ } function addition($index){ } }
順版は変わりますが、処理順で、
商品詳細ページのカートに入れるボタンを押すと、
/soyshop/webapp/src/base/cart/cart.phpが読み込まれます。
カートに入れるボタンのパスを見ると、
/shop/cart/operation?a=add&count=1&item=5となっており、
GETのaはカート内でどのような処理をするか?
addの場合はカートに指定の商品を追加
removeの場合はカートから指定の商品を削除
updateの場合は注文数を変えたりです。
countはカートに入れる商品の数で、
itemは商品のIDです。
商品をカートに入れると最初にcompare関数が呼び出されます。
商品オプションプラグインでcompare関数の実際の処理で説明すると、
カートの中である商品とそれに紐づいたオプションのセットがすでにあるか?を調べ、
同じ組み合わせがあれば、その組み合わせのindexを返し、
同じ組み合わせがなければ、新しいindexを生成して返します。
そのあとにdoPost関数が呼び出されます。
ここでカートロジックで生成したセッションの中に
compareで生成したオプションの組み合わせのインデックスと商品IDを放り込みます。
clear関数はカートにある各商品の削除ボタンを押した時に実行されます。
onOutput関数は商品情報の下に表示されるHTMLを出力します。
order関数とaddition関数は
ご注文受付画面表示前に読み込まれる関数で、
商品オプションプラグインのorder関数内では、
doPost内でセッション内に放り込んだ各種オプションの値を取得し、
soyshop_ordersテーブルのattributesカラムにシリアライズした値で放り込んでいます。
商品オプションプラグインでは使っていませんが、
addition関数では、オプションを紐づけた商品が加算対象であるかどうかを見ていて、
加算対象であればsoyshop_ordersテーブルのis_additionに1を入れる。
display関数とedit関数は
管理画面の注文詳細の内訳で使われ、
display関数は表示のみ、
edit関数は注文内容変更の際に読み込まれます。