| Drupal

contextual-filterSometimes 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:

media_1400259595835.png

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":

media_1400259431382.png

Under that Advanced tab is the "Contextual Filters" area. That is where Arguments have moved to.

media_1400259618101.png

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.

media_1401280802586.png

Here's the contextual filter that makes that possible:

media_1401280670506.png

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

media_1401280748143.png

Here's the contextual filter for the Glossary:

media_1401280708880.png

Examples of Contextual Filters: Fields

One of the most common examples of a contextual filter is a calendar created with Views:

media_1401279238647.png

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:

media_1401279615605.png

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:

{wistia}7d1xpu9xs9{/wistia}

Drupal 6 Users

If you are still on Drupal 6, Mustard Seed Media have a very useful video for you:


About the author

Steve is the founder of OSTraining. Originally from the UK, he now lives in Sarasota in the USA. Steve's work straddles the line between teaching and web development.