web-dev-qa-db-fra.com

Le commerce limite la quantité de produit à 1

Je souhaite limiter la quantité de certains produits. Vous souhaitez ajouter un produit une seule fois dans le panier. Comment y parvenir?

Il y a 3 produits dans ma boutique et je veux que les utilisateurs ajoutent seulement 1 produit dans le panier à la fois.

Quel crochet dois-je utiliser?

4
Harkamal

Ce que vous voudrez faire, c'est ajouter un abonné à l'événement Add to Cart ( https://github.com/drupalcommerce/commerce/blob/8.x-2.x/modules/cart/src/ Event/CartEvents.php # L ).

Voici un exemple de code qui réagirait à cet événement. C'est pour un Drupal Commerce qui ne permettait d'acheter qu'un produit à la fois avec une quantité d'un.

/**
 * 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();
}
3
Matt Glaman

Installez la https://www.drupal.org/project/commerce_xquantity et définissez la propriété max sur la propriété /admin/commerce/config/order-item-types/YOUR_TYPE/edit/form-display/add_to_cart page à 1 ou toute autre valeur. Donc, une fois à la fois, en cliquant sur le bouton Ajouter au panier ou en modifiant la quantité sur la page /cart d'un client ne peut pas ajouter plus de max .

Mais si vous voulez globalement restreindre la quantité sur une certaine variation, installez le Stock de quantité étendue Commerce , le sous-module du module ci-dessus. Voir plus: https://github.com/drugan/commerce_xquantity/tree/8.x-1.x/modules/xquantity_stock#commerce-extended-quantity-stock

1
drugan