【ECCUBE3プラグイン開発】カートの中身を制御する(購入品目数・個数制御)


プラグインのアクションフックで、アイテム購入時のカートの中身の制御について記載します。

ECCUBE3のイベントフック一覧』の記事に記載しておりますが、ショッピング(買い物)の手続き前のカートへアイテムを入れる処理は、「front.product.detail.complete」にアクションフックを定義します。定義された関数名を想定して以下コード記載します。


 $app = $this->app;
 $cart = $app['eccube.service.cart']->getCart(); // カートオブジェクトを取得する


$ItemNum = count($cart->getCartItems()); // カートの品目数を取得する

// カート内の各アイテム毎に注文個数を取得する
foreach ($cart->getCartItems() as $CartItem) {
 $order_num = $CartItem['quantity'];
}

上記foreach内でカートアイテムの情報が取れたので、そこからオブジェクトを取得して、カートからのアイテム削除メソッドに渡します。

$ProductClass = $CartItem->getObject();</pre>
$app['eccube.service.cart']->removeProduct($ProductClass->getId()); // カートに入れたアイテムを削除
<pre>

また、カート内のアイテム購入数を減少させる時は以下のようにします。

$app['eccube.service.cart']->downProductQuantity($ProductClass->getId())->save();</pre>
<pre>