Show users any content that matches any taxonomy term in views
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.
I’m on the drupal4lib mailing list and want to thank all those who responded, specifically Kelly Lucas aka krlucas who is quoted below
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
taxonomy term.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.