Our use case seemed pretty straightforward. When users register on the site they select terms from a taxonomy list based on a field in their profile2 profile. As content is added to the site the same taxonomy is used to categorize content. We wanted a view that would let users see any content that matched any of their taxonomy term selections.
Start with a base View that shows Users (not Content).
1) Set a Contextual Filter for User ID, provide a default value and set it the
logged-in User’s ID
2) Create a relationship from the user to the user’s profile
3) Create a relationship from the field containing the select terms on the
user/user profile to the taxonomy terms
4) Create a relationship from the taxonomy terms to the nodes that have that
You should now be able to add the relevant node fields to the View.
What didn’t work: So while this seemed incredibly straightforward getting this many-to-many relationship to work caused me endless grief. I tried views global filter thinking that might be a good solution – according to their documentation any fields pulled from the profile are used to override the values. Using the multiselect widget this simply failed all over the place – values didn’t save at all, weirdness reigned, and general misery ensued.*
Also in the “fail” category – making a view based on the content table and the taxonomy table. Either of these might have worked with a few more relationships, however at this point I think we’re stocked up.
Thanks to all involved who helped on this – Cary Gordon, Brazos**, and of course Kelly Lucas
*fwiw we read the entire issue queue and documentation, however this statement really hurt Rik’s feelings. Would someone please hug him down under?
**Brazos added another interesting option of using page manager to override the user page and pass variables along that way – I’m not experienced in this line of development to implement, but it seems interesting.