Video Updates

Below is a list of additional bits of information for this video, including parts where time has shown that additional explanation is required. If updates to Drupal affect how the video will be interpreted, there will also be updates here.

Picturefill may not work perfectly in all browsers

Added on October 13, 2016

Because Picturefill is not a complete implementation of the srcset attribute, it will work slightly differently in various browsers. The number of browsers supporting srcset properties is growing, with IE being a notable exception.

Jquery Cycle plugin is now added via a library

Added on October 13, 2016

The Views Slideshow module now requires an additional step to download the jQuery Cycle plugin into the sites/all/libraries folder. You can see detailed instructions in the README.txt file that comes with Views Slideshow.

Replace use statement to reference new class

Added on October 13, 2016

A viewer noted that we do not update the use statement after updating the code to use the BlindD8NotableEvent class. If you run into trouble with the class not being available, add the following statement to the top of the file:

use Drupal\blindd8\BlindD8NotableEvent;

Using Navigate is not suggested

Added on October 13, 2016

There are some security holes noted in the module that have not been fixed. I stand by the concepts that this module introduces for navigation and am keeping this video here as an example of how to set up solid administrative navigation in a project, but I would not suggest you use Navigate at this point.

Videos this update affects:
How the Navigate module works

Grunt-autoprefixer has been deprecated

Added on October 13, 2016

Permissions are now defined in a $module.permissions.yml file

Added on October 13, 2016

As per this update to Drupal 8, permissions are now defined in a $module.permissions.yml file instead of hook_permission(). Please see the change record on for details on converting to the new structure.

Why the validation function name changes mid-way through the video

Added on October 13, 2016

In this video we correct a mistake in the validation function name, but we don't explicitly mention why this change occurred. We switched from input_example_form_validate() to input_simple_form_validate(). The input_simple_form_validate() version is correct because the form function name is input_simple_form(). Sorry for not mentioning the change!

Videos this update affects:
Using validation functions

Query should use "ORDER BY" instead of "SORT BY"

Added on October 13, 2016

In this video we accidentally use SORT BY instead of ORDER BY.

The format for a menu links file is now [modulename]

Added on October 13, 2016

In the latest version of Drupal 8, the filename format of the YAML file used for adding menu links via a module has changed from modulename.menu_links.yml to

How to automatically update a module

Added on August 20, 2016

In this video we demonstrate how to manually update a module. But, we neglect to mention that in most cases you don't have to do this manually, you can also use the Update Manager module to download the updated code, turn on maintenance mode, install the updates and guide you to the update.php file.

Just click on the Update tab on the Extend page, click the checkboxes next to the modules you want to update, and click the Download these updates button.

Videos this update affects:
How to update a contributed module

Code for getting the route of the current page in Drupal 8

Added on August 18, 2016

Here's the code you'd need to get the route from the current page:
You can also use this shorter version:

Stable releases of contributed modules now show a shield to indicate that they are covered by the Drupal security team

Added on August 16, 2016

While the videos regarding secure releases are still valid, has added a shield badge to make it easier to tell which releases get monitored by the Drupal security team:

The main Drush site has moved

Added on April 06, 2015

In this video we referenced, but the site now forwards to, and the commands are listed on

Drush Make is now included in default Drush

Added on April 06, 2015

When this video was recorded, Drush Make was a separate download and install, but now it is part of the default Drush bundle.

Pantheon's interface has changed

Added on March 10, 2015

Since the recording of this video, Pantheon's interface for spinning up and managing sites has changed to some degree. However, you should still be able to follow along with the video where we demonstrate how to run custom code on a Pantheon-based Drupal installation.

The wireframe title for the block does not match the title we use in the video

Added on March 10, 2015

In this example, the sidebar block we are creating has the title "Recent blog posts", but when we create the block we use the title "Latest blog posts". They're the same block, we're just taking some liberties with the wireframe that a real client might not appreciate.

You may need to put your images in themes/custom/css/images directory

Added on March 06, 2015

One viewer noted that they needed to put their images for this step into the themes/custom/css/images folder instead of the themes/custom/images directory. If you're having troubles, give that a shot.

The classes in this video may have changed to use 'home_page' instead of 'main_page'

Added on March 06, 2015

In this video we copy over several style definitions, many of which use the .video-id-blog_main_page selector. However, several viewers have mentioned that when following the videos they end up with .video-id-blog_home_page instead. So if you're having issues with the styles applying, give the other selector a try.

The php command may not work if you have not installed it

Added on March 06, 2015

In this video we execute a PHP script, but if you have not installed PHP before it will not work. To install PHP on its own without a full development stack, here are some instructions:

Instructions for Windows
How to add the 'php' shortcut command in Windows

Instructions for Mac

The interface for the "Module Instructions" module may be slightly different

Added on March 06, 2015

One viewer noted that the "Operations" column with the "Readme" and "Install" links are now consolidated into a single button drop-down. Don't panic, all is well, just click that button to view the options now.

Videos this update affects:
How the Module Instructions module works

The class name you use may be different

Added on March 06, 2015

One viewer pointed out that the class name they needed to use for this step was actually .view-id-blog_main rather than .view-id-blog_home.

It's actually "seventh step"

Added on March 06, 2015

In this video I say "sixth" step, but I really mean "seventh". Not too important, but I didn't want to leave you feeling utterly confused.

The widget name has changed to "Pop-up calendar" in the latest version of the Date module

Added on March 06, 2015

In the video we select a widget called "Text Field with Date Pop-up calendar". In the latest version of the Date module, this is called simply "Pop-up Calendar". To follow along with the videos, choose this option.

Videos this update affects:
How to add and configure a date field

The 'Number of values' is global for all instances of a field

Added on March 06, 2015

In this video, I suggest that you can change the Number of values setting for individual instances of a field when indeed you cannot. When we change it in this video, we're actually changing it for all instances of the field, including the one we created in previous videos. Kudos to one of our viewers for pointing this out!

Note that in modern PHP you should use a __construc() method instead of a method with the same name

Added on March 06, 2015

In this example and the ones to follow, there is a method in the Crud class called Crud(). While this still works, the proper way to do this now is to create a function called __construct() instead.

You may need to add a ./cache folder and use date_default_timezone_set() for this to work

Added on March 06, 2015

One user noted that they needed to add date_default_timezone_set(); to their code to set the server to their time zone. Also, the ./cache folder was not created automatically and they needed to create it manually before the script worked.

Your browser may not have a problem displaying the £ symbol

Added on March 06, 2015

In this example, we demonstrate how to change the character encoding to display the pound (£) symbol. Some viewers have noted that their browser did not have this problem in the first place, so the video doesn't have the same output on their machines. No worries, this is a small step on the way to bigger things, but the info about character encoding should still be useful.

Drupal 8 now has a simpler method for fetching the current route, yea!

Added on March 06, 2015

In this example, we're using Drupal 8 Alpha 12 and we have to invoke a rather long method to fetch the current route. However, if you're using the latest version of Drupal 8, you can now use the much simpler routeMatch() method, as demonstrated in the updated change record here, under the drupal_get_title() section.

You may actually see 5 here instead of 20 for the "Maximum number of items to display"

Added on March 06, 2015

In previous videos and in the resource pack we use the number 5, but in the video we use 20. Nothing serious, just wanted to relieve any confusion.

You may need to adjust a line in .htaccess for examples to work

Added on October 13, 2016

A couple of our viewers had to add the following line to the .htaccess file for these examples to work:

RewriteCond %{REQUEST_URI} !/examples/.+.php$

Add to playlist

Add to , or

Add to new playlist:

Add to playlist
This is a member-only feature
But, it's easy to become a member

Add to cart:

Contact us

Below are the supported keyboard shortcuts for our video player.

Start / stop video
Go to next video
Go to previous video
Increase or decrease player speed by 20%
Skip ahead or go back by 15 seconds
Jump to a percentage (2 is 20%, for example)
Toggle full screen
Videos Pricing More Search
BuildAModule Logo Icon BuildAModule Logo Icon
Become a member!
1 month
6 months
10% off
12 months
20% off
All memberships come with the following:
24 / 7 access to the entire 1800+ video library
An innovative video player with a rolling transcript
Extensive Drupal and cross-platform training
A thorough and thoughtful training style
Progress tracking
Take notes on specific video sections
Intuitive multi-user management
How many users?
Go solo with a single user, or give multiple team members access through one account and get discounts by bundling multiple users into a single membership.