Contextual Filters and Arguments in Drupal
Sometimes the name you give something is really important.
In Drupal 6, a key feature in Views was called “arguments”. This term made perfect sense to developers, but caused plenty of raised eyebrows amongst news users.
Both the name and location of this feature has changed in Drupal 7. Arguments are now called “Contextual filters”.
Here’s an introduction to arguments and contextual filters. We’ll show you why they are so useful, whatever they may be called.
Where are Arguments or Contextual Filters?
In the Drupal 6 views screen, Arguments were right in the center of the page:
With Drupal 7, the Arguments area was moved and re-named. There’s now a whole, hidden area of the Views screen that is simply called “Advanced”:
Under that Advanced tab is the “Contextual Filters” area. That is where Arguments have moved to.
Examples of Contextual Filters: Default Views
Several of the default Views contain contextual filters and would make good starting points to learn more.
Go to Structure > Views and enable both the Archive and Glossary views to see them in action.
The Archive view dynamically organizes content into the month it was published. A normal filter would only allow us to show content from certain months. A contextual filter changes which months it shows, based on the page you’re viewing.
Here’s the contextual filter that makes that possible:
The Glossary view is similar to the Archive, but it dynamically sorts content by the first letter of the title.
An ordinary filter could show all content that starts with A or B, but a contextual filter is flexible enough to show any of those, depending on the context
Here’s the contextual filter for the Glossary:
Examples of Contextual Filters: Fields
One of the most common examples of a contextual filter is a calendar created with Views:
In order to functional correctly, the calendar needs a Contextual Filter which pulls from a Date field.
A simple filter would not suffice here because it’s not flexible enough. The user can change between June, July, August and other months. They could even change to view weeks, days or years. Only a contextual filter can adapt automatically to those different displays.
Examples of Contextual Filters: Users
A second example of contextual filters involves creating a personalized newsfeed for users. In the View below, the users only see movies that are in genres they have selected:
This is possible because we’ve added a contextual filter for the user. The view is
An ordinary filter would allow us to choose “Action”, “Comedy” or “Romantic” movies, which are set up as taxonomy terms.
However, a contextual filter is flexible enough so that we can dynamically change those taxonomy terms based on the user.
Examples of Contextual Filters #4: Nodes
This third and more complex example is part of our video class on Views.
In this part of the class, Rod is building a clone of IMDB.com. He wants to automatically show a list of actors who have appeared in the movie that’s showing on the page.
Again, a simple filter would suffice to show a list actors, but not one that can dynamically change based on the main node being displayed. Watch the video to see how it’s done:
Drupal 6 Users
If you are still on Drupal 6, Mustard Seed Media have a very useful video for you:
Thanks for the example at
Examples of Contextual Filters #4: Nodes
demonstrating with Node ID
How do we do the same with Node Title?
We have a view that is similar to a calendar in that it is generating a summary using a contextual filter on a date field, which gives us a page w a listing of “Month,Year” with each item linking to the more detailed view of all nodes from that month/year.
The url for the summary page is “meetings/2014”. The url for the view generated by the contextual filter is, for example, for November: “meetings/2014/2014-11”
We are trying to figure out where the url date format (2014-11) is being generated from, and if we can change that? I have googled exhaustively, but can’t find anything that helps. I feel like we are missing some basic setting, but have looked everywhere.
Thanks for any help you can provide.
I am using panels and page manager for my pages my page is looking like example .com/news?country=33&year=116
i need to modify this to hexample .com/news/country-america-japan-year-2019-2020
can you please help me on this i am using Drupal 8