Views block displayed by Taxonomy Term which current node, content, page or URL is categorized using Contextual Filters
March 22, 2017
We all know by now Drupal 7 Views is powerful enough to filter and display dynamically any content in various and flexible ways, and the options are endless. It's just a matter of how and where you want it set up.
- You have a Content Type (Node), let's say a content type called "Blogs" where content items added may be "Article about Drupal 7", "Article about Drupal 8", "Article about Joomla", "Article about Magento", and list goes on and etc.
- You have a friendly URL based structure (probably using a Path Auto module generated URL aliases for your content types, content nodes, taxonomy vocabulary and terms)
- You have a Taxonomy and Terms setup such as: "Blog Category" (Vocabulary), then listed under this are terms such as "Drupal", "Joomla", "Magento", and etc.
- You want to display all blog contents in your block for this to show on any blog sections, listings or blog pages - no problem you can do that with the filter criteria alone (filtering by Content Type), then under Structure > Blocks adjust this block to show where needed (show in specific URLs only among other choices)
- You want to display all contents "tagged" or categorized under a specific term in your block
How to Use Contextual Filters to show Blocks dynamically according to Taxonomy Term
- Set-up your block to display content, fields, etc. as required - format settings, fields settings, may also include setting up Relationships to show fields from other Content Types, entities, etc.
- Under Contextual Filters, add Taxonomy term: Name
- Under "When the Filter Value is NOT Available", choose "Provide default value"
- Under "Type", choose "Raw Value from URL" - this is due to your requirement to show blocks according to for example /blogs/category/drupal (this URL being the term listing or feed for "Drupal")
- In our example, "Path Component" is set to 3, because we want to target the term "drupal" in the URL /blogs/category/drupal (drupal being in the third placement of the URL)
- Check "Use path alias"
- Save then test by typing in drupal in your preview
- Enable the block in Structure > Block, then viola!