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