How to write a PHPUnit functional test for Drupal 8

21st Jun 2016

This article will talk you through the steps to follow to write a simple PHPUnit functional (Kernel) test for Drupal 8.

I have been doing a lot of work on Drupal 8 migrations for the past few months so that will be the focus of the test.

Read more

Drupal 8 Event Subscribers - the successor to alter hooks

14th Jun 2016

In Drupal 7 if you wanted to tweak the functionality of an existing function then an alter hook was your best friend, but in Drupal 8 it's "all change!"

With the introduction of Symfony, your new BFF is an Event Subscriber. Alter hooks still exist, but it is recommended that we all move towards Events to fall in line with Symfony.

If you are interested in the comparison between alter hooks and events then I recommend this article from PreviousNext.


In just 4 simple steps, this article will talk you through the process of writing a custom Event...

Read more

Checking if the current page is the homepage in Drupal 8 - not using drupal_is_front_page

10th May 2016

We will keep this one short and sweet. There is quite a bit of documentation pointing to the fact that drupal_is_front_page() still exists in Drupal 8 ... it doesn't!

Panic not. The solution is nice and easy, the following snippet will act as a drop in replacement for drupal_is_front_page() - simply returning TRUE or FALSE.


Read more

How to write a (more useful) Drush command

3rd May 2016

Welcome to part two of our miniseries on Drush commands! Do check out [part one]( if you haven't already. There you'll see what we've been up to with our pretend module, *my_awesome_module*. If you're writing a custom Drush command, it's pretty much guaranteed that you're needing to do something more complicated than write 'Hello World' to your database 5,000 times. Let's take a look at some Drush essentials.

Arguments and Options

You guessed it - just pass in an array. Simply give 'arguments' or 'options', and, for each one, a helpful description.

 * Implements hook_drush_command().
function my_awesome_module_drush_command() {...
Read more