What is the best way to achieve this result? I've hit a bit of a stumbling block with how to tackle this design I'm working on in Drupal. The end result needs to be a block that sits on the home page and it updated weekly by anyone with the 'staff' user flag. 

This is what it needs to be in the end: http://i.imgur.com/XUZugT4.png (Data being the focus of this question, design is irrelevant):


Whoever generated the list has their name and picture on the block.
There will always be 3 products.
The person who picked this week can include a personal comment on the picks.


I've been able to get it working so far by making a block that uses inline PHP to grab a view that contains 3 products that have the taxonomy term "Promote to Front Page", and then manually filling in the user information myself... But I'd like for this to be something a staff member can fill out themselves without needing any code knowledge.

Is this something achievable with a content type or something else i'm not thinking of?

An awesome bonus is if there's a way to do it so that each week a new pick is generated but the old ones are still stored for reference.

Thanks muchly!
I would do it with content type using entity reference to products.
Entity reference allows you to reference other nodes in your "deal of the week" node and use this relationship in your view. No PHP should be needed.
With this setup, you can do almost anything:


only Staff is allowed to create new content of this type
view can show author name (and picture)
custom comment? no problem, just a text field in content
old content is still available