特定の商品の数量を制限したい。カートに商品を一度だけ追加したい。これを達成する方法は?
私のストアには3つの商品があり、ユーザーが一度にカートに追加できる商品は1つだけです。
どのフックを使用する必要がありますか?
やりたいことは、カートに追加イベントにイベントサブスクライバーを追加することです( https://github.com/drupalcommerce/commerce/blob/8.x-2.x/modules/cart/src/ Event/CartEvents.php#L )。
以下は、そのイベントに反応するコードの例です。これは、Drupal Commerceサイト用で、一度に1つの製品を1つの数量でしか購入できませんでした。
/**
* Sets quantity to 1 and ensures only one product in the cart.
*
* @param \Drupal\commerce_cart\Event\CartEntityAddEvent $event
* The cart event.
*/
public function onProductAdded(CartEntityAddEvent $event) {
// We only want 1 quantity.
$cart = $event->getCart();
$added_order_item = $event->getOrderItem();
$cart_items = $cart->getItems();
foreach ($cart_items as $cart_item) {
if ($cart_item->id() != $added_order_item->id()) {
$cart->removeItem($cart_item);
$cart_item->delete();
}
}
$quantity = $cart_items[0]->getQuantity();
if ($quantity > 1) {
$cart_items[0]->setQuantity(1);
}
$cart->save();
}
https://www.drupal.org/project/commerce_xquantity をインストールし、maxプロパティを/ admin/commerce/config/order-item-types/YOUR_TYPE/edit/form-display/add_to_cartページを1またはその他の値に変更します。したがって、一度にカートに追加ボタンをクリックするか、/ cartで数量を編集します顧客がmaxを超えて追加できないページ。
ただし、全体的に一部のバリエーションの数量を制限する場合は、上記のモジュールのサブモジュールであるCommerce Extended Quantity Stockをインストールします。詳細: https://github.com/drugan/commerce_xquantity/tree/8.x-1.x/modules/xquantity_stock#commerce-extended-quantity-stock