I'm in the middle of learning Craft Commerce. When I go to an individual product my URL says /shop/wella-shampoo/. I'd like it to say /shop/**hair-care**/wella-shampoo/ because this is the category this product falls into.

I've tried adding shop/{categories.first().slug}/{slug} to the URL Format but I get the following error:

Internal Server Error

Craft\Commerce_ProductModel and its behaviors do not have a method or closure named "categories".

  • Is categories the name of a Category Field Type on your Product Type's Field Layout? – Brad Bell Oct 20 '17 at 23:14
  • Hi, no the field is called 'assignToCategory'? – Martin Oct 21 '17 at 9:24
  • And does this particular product have variants or no? – Brad Bell Oct 21 '17 at 15:22
  • Yes, the product has variants – Martin Oct 23 '17 at 13:38

It's a bit confusing, but since this product type has variants, using this should work:


If it didn't have variants, you wouldn't need the object reference in front of it. The same thing applies if you're referencing a field inside of Matrix as well.

This has been made easier in the upcoming Commerce 2 so you don't have to worry about the differences.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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