Wir haben eine Anforderung, wonach ein Kunde jeweils nur ein Produkt in den Warenkorb legen darf. Er kann jedoch eine beliebige Menge dieses Produkts hinzufügen.
Wie kann ich verhindern, dass ein Produkt in den Warenkorb gelegt wird, wenn sich bereits ein Produkt im Warenkorb befindet?
Kann jemand dabei helfen?
product
cart
magento-1.8
Schüchtern
quelle
quelle
checkout_cart_product_add_before
, z. B. markshust.com/2012/Antworten:
Die Ereignisse
catalog_product_type_prepare_full_options
undcatalog_product_type_prepare_lite_options
sind deine FreundeDann in deiner Observer Klasse
quelle
catalog_product_type_prepare_lite_options
ist eine Premiere für mich! schön gemacht.Anstatt einen Controller neu zu schreiben (bitte nicht), schreiben Sie die
addProduct
Methode neu, um das Limit zu berücksichtigen:Wenn Sie Lust haben, ersetzen Sie das
1
obige durchMage::getStoreConfig('checkout/options/max_cart_qty)
und stellen Sie die config.xml Ihres Moduls wie folgt ein:Dieser Wert wird nun über den XML-Wert gesteuert. Wenn Sie wirklich, wirklich Lust haben möchten , fügen Sie dies der system.xml Ihres neuen Moduls hinzu:
Denken Sie daran, dass Sie ein
<depends>Mage_Checkout</depends>
für Ihr Modul festlegen müssen, um die vordefinierte Systemkonfiguration zu übernehmen.quelle
Eine Möglichkeit besteht darin, die addAction von Mage_Checkout_CartController neu zu schreiben.
Prüfen Sie also, ob sich bereits ein Produkt im Warenkorb befindet und ob ja eine entsprechende Fehlermeldung angezeigt wird. Wenn nicht, können Sie die übergeordnete Methode aufrufen, die den gesamten Add-Prozess ausführt:
quelle
$this->_goBack();
funktioniert nicht! Ich gerate in den if-Zustand, aber das Produkt wird noch hinzugefügt.Ich denke, Sie können einen Beobachter verwenden und die folgenden Ereignisse werden nützlich sein, um die Bedingungen zu überprüfen, die Sie wollen. (Möglicherweise sind einige der Ereignisse in der von Ihnen verwendeten Magento-Version nicht enthalten.)
quelle
checkout_cart_product_add_after
event. Die Frage ist, wie ich verhindern kann, dass das Produkt in den Warenkorb gelegt wird.Vielleicht eine Idee für das linke Feld, aber wie wäre es mit der Verwendung des
catalog_product_is_salable_after
Events?Sie können hier überprüfen, ob sich das Produkt im Warenkorb befindet oder ob sich ein anderes Produkt im Warenkorb befindet. Wenn sich ein anderes Produkt in der Warenkorbaktualisierung befindet, wird das Attribut 'is_salable' des 'salable'-Objekts an den Beobachter mit false übergeben.
HINWEIS : Dies wurde nicht getestet und ist nur eine Idee. Es schlägt fehl, wenn Ihre Vorlage
$product->isSaleable()
vor dem Anzeigen der Schaltflächenicht überprüft wird. Es würde auch nur die Schaltfläche entfernen und den Hinzufügungsprozess nicht stoppen, wenn der Benutzer die URL erraten könnte.quelle
Ich weiß, dass dieses Thema etwas altes ist, aber ich hatte ein ähnliches Problem. Ich möchte nur einen Artikel im Warenkorb haben und wenn der Kunde einen neuen hinzufügt, möchte ich den alten durch den neuen ersetzen. Also überschreibe ich die AddAction ( hier wie folgt beschrieben :
}
quelle