问题
I have a site with user generated stories. Stories are nodes. Stories are rated with Fivestar.
I want to create a calendar style view to list the top rated story - every day, for the current year. So at the end I will have a list of 365 stories.
I'm not sure how to approach this, any help would be great.
回答1:
You could make a View that takes a Date argument, where you'll pass a specific day', and return results sorted by Fivestar rating, and limiting the View to 1 result.
Then in your custom calendar, loop over every day, and each time, calling the View and showing the result, which will be the 'top rated' note. Though this might be somewhat overkill, it's suitable for a Block which shows today's current top rated Node. I wouldn't actually use it for a whole month or even year view.
Another option could be, that every 24 hours - and a little past midnight - you use that View to get the top rated note for the previous day, and store or flag it as the top rated. That way, only 1 Node a day will be flagged or stored, and you could build a view that lists all stored/flagged nodes, ordered by date. Rating is irrelevant here, since the View you ran in Cron already picked up the top rated one. Theme this View as a grid, and maybe with an argument Month, and you are close to a Calendar like Month view of your top rated Nodes per day.
Last option would be to build a View, which gets all nodes, and sort them by rating, and group them by day. Then make sure you only print 1 per group, namely, the top rated one.
来源:https://stackoverflow.com/questions/5917167/a-drupal-view-to-show-the-top-rated-node-per-day-each-day-for-a-year