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?
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();
}
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