I am scoping a bespoke ECommerce site with a web based administration system. I have a hierarchy of categories to which products can be related and custom attributes dependent on product type which are related to the product.

The initial plan was to have the categories drive the navigation and the attributes drive the facets. However, I have moved away from this slightly as this would mean that static content would be limited to the category structure of products. I still believe that attributes should drive the facets though.

I came to the conclusion that the categories should still exist within the system but the nav should be driven by its own configurable hierarchy as part of the CMS. You should be able to create a new node on that hierarchy, configure what template to use for that node, set it's visibility, and populate the attributes for the specified template. A template for listing products would need the category for an attribute but a template for static content would probably just need a wysiwyg editor to save html as an attribute.

The problem I have now is that this approach falls over when you encounter a product detail page. You would need to add the product to the system, assign it categories etc and THEN create it a page pointing to the id for every single product. When you have a large catalog with frequently changing products this is not a user friendly way of managing things.

How can I approach building a CMS type system for administrating a hierarchy of content which can be either static (e.g. terms and conditions page), dynamic (e.g. list of products from category or product detail from id), or dynamic mixed with static (e.g. product detail with static content regions that can be configured to be the same for all products, and static content regions which are specific to product ids and can be configured to override the default).

I am using ASP.NET 4.0 MVC3 with SQL Server.

Please help me get my head round the best approach...