Contextual filters are extensively used in scenarios that require filtering based on a specific context, which is not feasible using the standard filters available in Views.

We applied a contextual filter in one of our recent projects,a CMS implementation for a higher education institution. The project involved the creation of a slideshow display on specific web-pages assigned to different departments in the college. All the pages shared a common taxonomy vocabulary (department) with a separate taxonomy term for each department(e.g. Architecture, Biotechnology). A content type (department page) was used to create all the department pages. The creation of views block (slideshow) for each department page was unfeasible hence a single block was used along with a contextual filter to solve the issue.

Step 1 : Adding a Filter Criteria

We began by choosing “Content Type” as the filter criteria for all displays.

Choosing “Content Type” as the filter criteria

Step 2: Selecting a Content Type

We specified the “Content Type” as “Home Slideshow”

Configure filter criterion: Content type

Step 3: Enabling the Advanced View settings to configure a contextual filter

Enabling the Advanced View settings to configure a contextual filter

3.1 This was followed by opting for “Content: Has taxonomy term ID”

Drupal views - opting for “Content: Has taxonomy term ID”

Step 4: Configuring contextual filter : Content: Has taxonomy term ID

Then we configured Content: Has taxonomy term ID by opting for “When the Filter Value is not Available”, while choosing to “provide a default value”. The option to “Load default filter from node page” was checked and the default value was sourced from the “Taxonomy term ID from URL”. This was followed by applying the changes.

Configuring contextual filter : Content: Has taxonomy term ID - When the Filter Value is not Available

4.1 This is what the View Block Configuration Page looks like after the changes have been applied.

View Block Configuration Page after the changes have been applied

4.2 There is an option to test the contextual filter by typing it into the preview window and then opting for "Update Preview". Here is what the preview for this case will look like:

Drupal views - update preview

4.3 If you are familiar with the use of SQL Queries it would be worthwhile to turn on the display of the queries in the View preview display to keep a tab on what views will be up to when they are called.

Turn on display of the queries in the View preview display

Step 5 : Saving all the Changes

Now that you have learnt to configure a contextual filter, the key to applying it permanently is saving all the changes in the end.

Drupal views: Do not forget saving all the changes

Settings that you should be aware of

# What to do when the Filter Value is in the URL?

The “Override title” option here helps you alter the view’s title in case there is a contextual filter value present. Meanwhile the “Override Breadcrumb” option allows you the option of overwriting the view name in breadcrumbs. The validators associated with contextual filters are meant to ensure that the filters fit in certain parameters. The Contextual Filter Validation system may have numerous validators like basic validation, content, numeric,PHP Code, Taxonomy term and user that can be selected.

Drupal views: When filter value is in URL

In case the filter value does not validate, there are multiple options to choose from:

  • Display all results for the specified field
  • Hide View
  • Return Summary
  • Display contents of "No results found"

# How to allow multiple filter values while reducing duplicates ?

The Allow Multiple Values option inverts the filtering process by excluding the rows that match the filter criteria. This option allows several values for the contextual filters, as values separated by commas are interpreted by views as AND conditions while the values separated by plus signs are regarded as OR conditions. An example of allowing multiple values can be observed when several taxonomy term IDs are allowed to display the entire content marked with any of the terms.

Drupal Views: When there are Multiple Filter Values

The Reduce Duplicates option is meant to reduce the occurence of duplicate results due to repetition while filtering on multiple taxonomy terms. Although this option reduces duplicates effectively it makes the database query heavier. The standard functionality of a contextual filter can be effectively extended to cover filter ranges with the help of a module like Views Contextual Range Filter.

Valuebound is a key contributor to the Drupal community with a strong belief in having fruitful partnerships with our esteemed clients. We at Valuebound are committed to your business initiatives with our Enterprise level Web Solutions. Please contact us to know more about our service offerings.

 

comments powered by Disqus