I have a bit of a complex question, I want to apply three Catalog price rules to a category with products that are in multiple categories, however the three rules are different percentages off 15%, 20% and 30%. Since Magento applies the rule on a product level not the category it keeps applying the rule on all the categories the product is in and not the one category I want it to. Is there a way around this?

tl;dr Apply multiple catalog price rules too a single category with products that are in multiple categories.

1 Answer 1


This is not possible.
Not in a reasonable time frame at least.
As you said, the discount rules do not apply to categories. They apply to products.
So categories are considered as a product attribute when applying the rule.
In the end, the result of a price rule is the change of a product price.
And you cannot have multiple prices on products that depend on the category.

I don't think it's worth an investment in this. First of all, you will need to alter the product price index tables to support a category_id, then you will have to modify all joins to that table to take into account the current category id. Then you will have to remember in the cart, the category from where you added the product and make sure you use the price for that category.
These are just of the top of my head. I'm sure there are other issues to overcome.
And, on a personal note, I don't even think this is the moral thing to do. I mean a customer should not be obligated to pay more for a product just because he found it in a certain category.

  • Thanks for getting back to me so quickly, is there actually a work around? I can see this client wanting to have something similar in the near future. Commented Jun 16, 2015 at 13:43
  • @JoshuaRatcliffe. See my edit. Sorry I don't have a solution. Just some pointers.
    – Marius
    Commented Jun 16, 2015 at 13:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.