Drupal Planet

Clean up database pollution from the migrate Drupal module

I'm working on a large, complex migration from Drupal 7 to Drupal 8 right now. One thing I noticed is that the migrate modules pollute the database with an unreal number of tables which allow migrations to be re-run, etc. Well if you don't need that, here's how to remove these tables. Currently the migrate modules don't clean up after themselves. Put this in a custom module or PHP script that has bootstrapped Drupal. Note this code only works in Drupal 8. Shown is a .install file for a custom module. If you uninstall the custom module, it will run the cleanup:

Quick tool for generating Drupal hash salt strings

Every time I install Drupal I find myself fumbling for a nice hash salt string. Instead of finding a random solution, I decided to put together a quick page that generates a random hash salt string and get a shiny domain for it.

Check out DrupalHashSalt.com (easy to remember!) next time you need a random hash salt. I also posted the code used to generate the string.

If you have ideas for this site feel free to contact me.

Reverse core threaded comment ordering in Drupal 8!

The default ordering of all comments in Drupal 8's core comment module is ascending, meaning the oldest comments are displayed first. Sometimes you don't want this.

Assuming your comment field's machine name is field_comments, put this code into a module to get descending comments. I was having trouble with threaded comments, but this works since it alters the query by the c.thread database column instead of just 'torder':

Remove the comment text area filter tips link in Drupal 8

Sometimes you just want a cleaner comment entry box. Here's a quick Gist module that will remove your comment tip link beneath comment form body entries in Drupal 8. This uses a form alter to remove the filter help on the comment form.

If you wanted an even cleaner look, you could remove the other text below the comment box altogether by overriding filter-guidelines.html.twig and filter-tips.html.twig in your theme!

Scaling block output as Twig variables in Drupal 8

With Drupal 8's Object Oriented focus, it's just a matter of time before cooler approaches to the theme's giant template.php (now yourtheme.theme) file are found. I've written a nicer way to get block output into the $variables array in page and node preprocess functions. What this allows you to do is use simple variables like {{ my_cool_block_stuff }} in yor Drupal Twig templates.

Adding the node class to a body HTML tag in Drupal 8

Doing some hacking at DrupalCon New Orleans and my use case is to add a node-* class to the body HTML element in Drupal 8. With the preprocess hook in D8 it looks like there is access to different variables than previously. To get the node id one has to look at the cache tags. Here's how I did it:

In mytheme.theme:

Improving Drupal 8 core search when using multiple content entity searches

Drupal 8 allows you to create multiple search pages which show up as primary tabs on the search page after performing a search. This is cool, but has the limitation of making the user input a search term a second time when they navigate to the other tab.

Easily pull down a production Drupal site with drush sql-sync and drush rsync

Both of these drush commands are awesome on their own, but they really need a wrapper script to become workhorses. I built this script to refresh a local Drupal environment with 1 command. You can choose file folder sync, databases, or both. This assumes you have working Drupal installations on both ends already (minus the database). So once you're setup with your settings files and Drupal codebase, you'd run this to populate the site. Click here for the Github repository. Summary:

Quick Node Clone module for Drupal 8

I've created an interim solution to the lack of the node_clone module for Drupal 8. During a project at work, I created a custom module with very similar functionality so I ended up making it a contrib Sandbox project at Drupal.org. I don't have any community module releases yet, so it's currently up for project review. Click here to check out the project!

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.