I'm wondering what the EE design pattern, or best practice, is for cross-references.
I have a products channel that needs to be cross-referenced with a number of available colours, for instance.
Do I create an All Colours channel (contains all possible colours), and a Product Colours cross-reference channel, with relationships to the Products and All Colours channels? And let the user create the cross-reference by selecting the product and colour, then selecting the same product and another colour? Or is there a better way? (Please, please, tell me there's a better way.)
I'm open to writing add-ons. In fact, I'm researching that now. Not crazy about the hooks docs so far.
Thanks for your help.
Update: Thanks for the replies. You asked for more detail; so here it is.
Colours are just one of the cross-references I'm dealing with. The colours just have to point to a colour swatch (image) for display purposes. So a category could be used. Plus, with the category fieldtype add-on, we can make that category a required field.
But as I said, we have other cross-references to deal with. Each product is in a product type category (and yes, they're implemented as categories). Each product type has an image associated with it. So far, just like the colours. But then the user decided that some product types might have two images, and the user needed to select which one would be associated with each product.
This one is making my hair turn grey. If Playa is the answer here, I'm happy to get it. But what are these tags you speak of? I haven't heard of them before. When I did a search, I got Channel Entries Tag, which is just the template tag.