Product reviews and how to model them

I'm migrating a vBulletin 3 forum to XF2, and that vB forum contains (among other things) product reviews; I'm trying to work out how best to import and model those reviews in XF2. In particular, reviews work like this: there are various review categories (say, "Cars" and "Motorbikes" and "Trucks"), in which are products (say, "Ford Fiesta", "Ferrari GTO"), and each product can have multiple reviews by different people; each review contains a number of specific fields ("do you recommend the product", a star rating, "price you paid", a list of pros and a list of cons, and some long-form text). Each product then shows, rather like a thread view, all the reviews for that product, as well as some summary information (8 people reviewed this, 62% of reviewers recommended it, the average star rating, etc). I'm not sure how best to model this in XF2.

My original thought was: use the Resource Manager; make each review category a RM category; make each product an RM resource; attach a thread to each resource in which people can post their reviews. However, it's not possible to require each reply to a thread to fill in specific fields; there are custom thread fields, but they only apply to the first post in a thread and not all the replies (and this thread suggests that that's by design and won't change). So I don't think that method is workable.

I could make each review be a resource in itself; I can then define custom resource fields so everyone creating a review is actually creating a resource, and a product would be a whole resource (sub)category. The issue with this is that I don't think it's possible to show the "thread view" where one sees all the reviews for a product and the summary on one page; the resource category view isn't really designed for that.

There used to be a book review add-on for XF which did basically this -- the developer didn't want it to be used for things other than book reviews, but I could take it as inspiration. However, it was for XF1, not XF2, and it's abandoned.

So, I'm open to suggestions; what's the best way to model this?
 
Top Bottom