We are also looking to create a year/make/model plugin and would love to collaborate with someone else and divide up the work. We have already started work on a plugin but its not yet complete.
The way I see it, the existing solution currently has a 2 tier attribute schema:
tier 1: specification attributes
tier 2: specification attribute options
with a many-to-many relationship between tier 2 and products
What is needed is a 3 tier structure to satify the Y/M/M schema, so going from least to most specific:
tier 1: make
tier 2: model
tier 3: year
with a many-to-many relationship between tier 3 and products
As the tier 1-3 tables can have generic names to allow implementation of other products that may utilize a 3 tier schema, this poses several options.
Option 1:
No code changes - Denormalize tier 2 and tier 3 into a single record and just use the existing specification attribute tables. So for example, add a specification attribute name: Toyota, then add many options to Toyota such as: 2003 camry, 2004 camry, 2003 corolla, 2004 corolla, etc. This would potentially work, but its not ideal, and has its limitations.
Option 2:
We can extend the existing specification attribute tables, and add one more table to handle tier 3.
Option 3:
Create a completely new set of 3 tables. This would be the most ideal situation, with maximum flexibility and seperation into it a separate pice of functionality.
The GUI functionality should also have some differences, as this should return products without having to drill down into a category.
If the NOP Commerce team could create something to do this functionality would really be the best option, as this type of implementation goes beyond a "plugin", and is more of a core functionality, especially since entity framework does not allow creating a many-to-many relationship from a new plugin table to an existing table.
If anyone has some ideas, or wants to help, would love to hear about it. Our site is located
here.
Thanks.