Ok so my situation is I am developing a website for a takeaway / restaurant and there are a number of products that fall under a product type, lets call this starters product type.

One of these products has the option for couscous or rice.

I would rather not have to list this as 2 listings on the menu and instead have it as one with some kind of option either before or after the person has clicked add to cart.

Are there any modules out there which are close to achieving something like this? Most I have found seem to be directed at product types as a whole.

  • Drupal Commerce prefers these sort of non-SKU altering options on products that differ from product to product to be implemented via a field on the line item used to represent the product on the order. There are alternate methods, such as the Product Add-on module you've linked below, but I haven't audited any of them. Feb 4, 2015 at 14:09

3 Answers 3


You can build your restaurant menu based on views, where you list commerce_products instead of product types(nodes). This will render one row for each variation. You can also add relationship to your product types(nodes) for rendering/grouping/filtering.

You can also render the view of product variations at the product full page. Then the user will see all the possible variations of current product at once.


I have just found an answer to my own question, with the module Commerce Product addon you can infact build product types that add on to other product types but can than be assigned to individual products within that product type rather than across the whole of that product type

Here is a video tutorial



Here is another solution, one which works better than my suggestion above. Please see this blog post and video tutorial. This is for the module Commerce Pricing Attributes https://vimeo.com/59862366

Your Answer

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

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