1

あなたが私を助けてくれることを願っています.Magentoカタログプロモーションルールにネストされた条件をプログラムで追加したいと思います.私は次のコードを持っています:

$oMainCondition = Mage::getModel('catalogrule/rule_condition_combine')
                ->setType('catalogrule/rule_condition_combine')
                ->setAggregator('all');

        $oFirstCondition = Mage::getModel('catalogrule/rule_condition_combine')
                ->setType('catalogrule/rule_condition_combine')
                ->setAggregator('any');

        $oProdCondition1 = Mage::getModel('catalogrule/rule_condition_product')
                ->setType('catalogrule/rule_condition_product')
                ->setAttribute('sku')
                ->setOperator('==')
                ->setValue("2595040015");

        $oProdCondition2 = Mage::getModel('catalogrule/rule_condition_product')
                ->setType('catalogrule/rule_condition_product')
                ->setAttribute('sku')
                ->setOperator('==')
                ->setValue("2595040019");

        $oFirstCondition->addCondition($oProdCondition1);
        $oFirstCondition->addCondition($oProdCondition2);
        $oMainCondition->addCondition($oFirstCondition);
        $oCatalogPriceRule->getConditions()->addCondition($oMainCondition);

私は次のことを達成したいと思います: 1 つのメイン結合条件、条件 ALL で、このメイン結合条件は 1 つの子を持ちます。条件 ANY と組み合わせた条件 この子には 2 つの子があります。商品 SKU は 2595040015 でなければならない、または商品 SKU は 2595040019 でなければならないというルール

(注;この場合、ネストされた条件にすることはまだ意味がありませんが、コードをより複雑にする前にこれを機能させたいと思います)

しかし; 上記のコードでは、以下のみが作成されます。

1 つのメイン結合条件、条件 ALL を使用 1 つの子結合条件、再び条件 ALL ( ANY の代わりに) を使用

製品 SKU に関する 2 つのルールがバックエンドにまったく戻ってきません。

ここで私が間違っていることを誰でも知っていますか?

4

1 に答える 1

1

この記事をご覧になることをお勧めしますhttp://www.demacmedia.com/magento-commerce/mini-tutorial-creating-shopping-cart-rules-programatically/

このブロックを使用する必要があります:

  $item_found = Mage::getModel('salesrule/rule_condition_product_found')
  ->setType('salesrule/rule_condition_product_found')
  ->setValue(1) // 1 == FOUND
  ->setAggregator('all'); // match ALL conditions
  $rule->getConditions()->addCondition($item_found);
  $conditions = Mage::getModel('salesrule/rule_condition_product')
  ->setType('salesrule/rule_condition_product')
  ->setAttribute('sku')
  ->setOperator('==')
  ->setValue($sku);
  $item_found->addCondition($conditions);

お役に立てれば。そのようなルールを作成するために同じ方法を使用します。

于 2015-07-28T11:38:05.800 に答える