Drupal Planet

The state of your custom Drupal 8 projects in 2015

Drupal 8 was just released! Awesome! Unfortunately, the state of contrib is a warzone, as usually happens after a big Drupal point release. Even more so now that everything has changed. The reality is that if you're doing something custom, you're not going to be able to take a contrib module like Rules, Relation, etc and use it how it is (yet). Thankfully with the Object Oriented approach in D8, you can extend classes of contrib modules that are unfinished and implement your own custom functionality. Gone are the long, complex module files from hell with little structure.

Creating links with custom classes in Drupal 8 modules

If you're getting a little frustrated with the new Drupal::l function in D8, which is actually going to be changed to Link in Drupal 9, here's how to create a link with class attributes right now. Attributes like link classes used to be defined on the l() function in Drupal 7, but are now passed into the Url() function as extra options.

Here's the ugly truth in how you link to something within module procedural code. You'll want to put the "use Drupal\Core\Url" at the top of your file:

How to make custom Guzzle requests in Drupal 8 modules

If you're sending a request to a custom URL in Drupal 8, you might be tempted to implement a solution using cURL or another library. However, Drupal core comes with Guzzle, a "PHP HTTP client that makes it easy to send HTTP requests and trivial to integrate with web services." As with most things in Drupal, it's not obvious how to use something immediately, so here's a demo to show you how to take care of sending a request to an arbitrary URL inside a custom Drupal module. You might use this example class to display a status code on some page.

How to check a user role inside a custom module in Drupal 8

If you need to check for a specific role such as 'administrator' in Drupal 8, the process is changed from past versions. The following is an example of how you'd check for an administrator role when rendering the user edit form. You might do this if you were unsetting form variables based on role:

Drupal 8 Site Building Gotcha: System Blocks

For those starting to build on Drupal 8, some things can be in the same place as Drupal 7 while others can be "hidden". While the idea is to move things to more logical places, sometimes it's confusing to site builders since they have to learn the system anew in some regards.

Repeating blocks of template code in Drupal 8

I've had some trouble using Twig's include statements in Drupal 8 theming.  I'm not sure if this is a bug since it's at Beta 4, but it's sort of annoying.  I include my content areas in page.html.twig in a separate include file in Drupal 6 and insert it into the area I need.  For example, if I have a 3 column layout, I'm changing the Bootstrap classes from "col-md-12" to "col-md-9" and "col-md-3" (for a sidebar) if the sidebars have content in them.  Includes are apparently escaping (?), though, and not printing anything other t

Print your theme's logo path in Drupal 8 with Twig

I'm updating a Drupal 6 theme to Drupal 8.  One thing I'm doing is making the logo in my Twig template a Twig variable instead of hardcoding the path.  Here's how you do it.  This assumes a theme named 'acton', but you'll change that to your own theme's name.

In 'acton.theme', assuming your logo is 'logo.png' in your theme's root:

function acton_preprocess_page(&$variables) {
  $variables['logopath'] = '/' . drupal_get_path('theme','acton') . '/logo.png';
}

In your Twig template, do something like this:

Theming Drupal 7 Webform fields with Bootstrap

Bootstrap is a great Drupal theme that makes it so your form elements and other Drupal things get output with proper Twitter Bootstrap CSS attributes.  One downside to it is that the popular Webform module has elements that don't get styled by the Bootstrap Drupal theme and then they look like unstyled form fields.

Drupal 7 Panels Template Suggestion Tips

If you're doing any theming with Drupal, you'll undoubtedly want to implement template suggestions for some of your fields at some point.  Usually you'll have some undesirable formatting, especially in Panels panes.  This post at Drupal.org has a method of how to find the appropriate template suggestion for your panel pane by working in your template.php file with the Devel module and dpm().

Making Wordpress and Drupal configuration files easier for development and production environments

At last year's Drupalcon in Denver there was an excellent session called Delivering Drupal.  It had to do with the oftentimes painful process of deploying a website to web servers.  This was a huge deep dive session that went into the vast underbelly of devops and production server deployment.  There were a ton of great nuggets and I recommend watching the session recording for serious web developers.