Magento购物车价格规则-购买5个SKU的任意组合';s、 免费得到一个#失败

Magento购物车价格规则-购买5个SKU的任意组合';s、 免费得到一个#失败,magento,conditional-statements,shopping-cart,magento-1.8,Magento,Conditional Statements,Shopping Cart,Magento 1.8,我尝试了各种可用的条件和操作组合,但似乎无法解决这个问题。应该很简单。任何帮助都将不胜感激 我有5个SKU。让我们称它们为A、B、C、D、E。它们的价格都一样(8.99)。你每买5件,就可以免费得到一件。此规则涵盖这些SKU的任意组合。应匹配的示例: 如果购物车中有6个A,则一个是免费的(8.99折扣) 如果购物车中有2个A、2个B和2个C,则一个是免费的(8.99折扣) 如果购物车中有12个A,两个是免费的(17.98折扣) 如果购物车中有6个C、6个D和6个E,则三个是免费的(26.97折

我尝试了各种可用的条件和操作组合,但似乎无法解决这个问题。应该很简单。任何帮助都将不胜感激

我有5个SKU。让我们称它们为A、B、C、D、E。它们的价格都一样(8.99)。你每买5件,就可以免费得到一件。此规则涵盖这些SKU的任意组合。应匹配的示例:

  • 如果购物车中有6个A,则一个是免费的(8.99折扣)
  • 如果购物车中有2个A、2个B和2个C,则一个是免费的(8.99折扣)
  • 如果购物车中有12个A,两个是免费的(17.98折扣)
  • 如果购物车中有6个C、6个D和6个E,则三个是免费的(26.97折扣)
以下是我认为应该实现的目标,但还远未实现:

条件:

行动:

我更倾向于使用事件观察方法,这将为您提供最大的灵活性。 您可以构建一个观察者来捕获添加到购物车事件
sales\u quote\u add\u item
,并将您的逻辑放在那里

observer函数中的以下代码将为您指明正确的方向:

//新增产品:

$item = $observer->getEvent()->getQuoteItem();
$itemQty = $item->getQty();
$itemSku = $item->getSku();

// Change price of added product 
$item->setOriginalCustomPrice($newPrice);
//获取购物车中的所有产品:

$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
    $itemSku = $item->getSku();
    $itemQty = $item->getQty();
}

祝你好运

这个扩展为我做到了:


这个问题似乎离题了,因为它属于上一页。我正在使用此扩展()通过URL将所有产品添加到购物车中,因此不确定这是否可行。我有几天不舒服,但有机会我会试试的。希望使用规则系统。非常感谢你的帮助!当通过url向购物车添加产品时,该观察员也会工作。你的需求对于价格规则来说太复杂了,但是一个观察者会做这项工作。买5送1太复杂了!?如果可能的话,我还是喜欢使用规则。这就是它的用途。使用规则系统我能得到的最接近的结果是什么?