How to use Contextual Filter in Drupal 8
Blog

How to use Contextual Filter in Drupal 8

Contextual filters in Views are powerful, but getting them to work perfectly can be a tricky sometimes. This will hopefully save some people from the headache I had gone thru’. Contextual Filters in Drupal 8 are similar to the Drupal 7 with advance feature and more dynamic compared to normal filter. A Contextual Filter provides more convenient way to fetch the data either from variables sent programmatically or URL.

 For example: 
 A contextual filter for a node author would be able to display all nodes written by the currently logged in user.


My goal was to have a page of Articles that could be filtered  based on logged in user. In this tutorial we will use author relationship to get the name of the author and use it in a Display summary to list all the users with some additional information.

Step 1: We have to go through basic View Page creation by visiting /admin/structure/views/add

Fill up View Basic information, Page settings detail and click on Save and edit. 

I have created a view with below input.

View Basic Information
         View name: Article_by_You
         Description: listing article created by logged in User

View Settings
         Show: Content
         of Type: Article
         
Page Settings
        Page Title: Article_By_You
        Path: article_By_You

Page Display Settings
         Display format: Table

s11

Step 2: Once we have done with Step1, next we would be redirected to View Settings Page. Here I have added Body, Authored by & Authored on under Fields Section. Now click the Advanced Section on extreme right and click on CONTEXTUAL FILTERS “Add” button.

FIELDS
     Content: Body
     Content: Authored by (Authored by)
     Content: Authored on (Authored on)

s12
 

Step 3: Search For “Authored by” and click on Apply (all displays).

s13

Step 4: Select “Provide default value” under WHEN THE FILTER VALUE IS NOT IN THE URL & Select Type asUser ID from logged in user” and click on Apply (all displays).

s14

Step 5: So, we are done with view creation. It’s time to review by visiting
 the URL: example.com/d8/article-by-you

This page is showing articles created by logged in users and we don’t have to pass any additional argument. Try logging with some other user credentials and visit article-by-you page to test the view we have created just now. 

s15