Working with Drupal 7 on a comparison site where a product is sold at different price rates at different physical shops. Now there about 300 of these shops. Going by Commerce default setup, I would have to create 300 product types or products and also create 300 product display nodes, which will be insane.

Since the product name, image, (and other attribute is going to be the same, I thought to create a single product display content type that has a price field and create a single product type with all the default fields except price. So with the content type, several product display nodes can be created that then references the single product type. Great right? But the price field in the product type is locked (you cannot delete it).

What other more civilized process is available to achieve my goal, as I need the Add to cart button on each product so as to be able to add to cart and compare the prices onwards.

I have seen a similar question (Drupal Commerce: How to handle billions of product combinations?) go unanswered, hopefully commerce has matured these past three years. Thank you.

1 Answer 1


To resolve the product display <-> product issue, I'd be using Inline Entity Form to embed the product form right into the product display node form. However, that doesn't address your need to have hundreds of unique prices corresponding to different physical locations. That's another issue entirely that we would typically refer to as pricelist functionality.

We do have a Commerce Pricelist module, but since "Store" wasn't a core entity type in Drupal 7, there is no pricelist variant correlating to a store. You'll likely need to enhance that module yourself to make it "simple" for end users. Other options would be dependent on your greater site IA ... and it's worth noting that store based product availability and pricing would be better suited to Drupal 8 if there's any chance at all at upgrading.

  • Thanks @ryan-szrama I will look into the pricelist module
    – Ojchris
    Commented Mar 5, 2019 at 2:32

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.