I've been a long-time Omega themer (and I especially love Omega 4), but outside of Drupal I always use Bootstrap as a starting point for styling a site. The Bootstrap theme has come a long way since I last evaluated it, so I gave it another try recently. It was tricky to set up a subtheme, so I'm sharing my steps here. More »

There's a neat feature in MySQL which lets you sort a result set by arbitrary field values. It's the ORDER BY FIELD() function. Here's how to leverage this in your Drupal views. More »

There are lots of ways to export configuration from one Drupal site and import into another; however, there are few ways to do the same with content. Here's a quick tip which has worked well for me. More »

MAMP is a great tool for setting up websites for local development (and the new 3.0 release is much more flexible than previous versions). Forward is a simple command-line tool for routing DNS traffic to your local machine. Getting them to work with Drupal (the way I wanted) took me awhile to figure out, but it's actually very easy. More »

Drupal installation profiles are usually just starting points for a new site, but sometimes you want to leave an installation profile untouched, adding your own additions in a separate space and leaving a "clean" upgrade path for future versions of the profile. Here's a handy script I use for such situations. More »

I often use the excellent Migrate suite of modules to import data into Drupal. It's great for getting any type of content into a Drupal node, file, taxonomy term, user, and more. My latest task: importing content from raw HTML into a Drupal node. Not finding any pre-built classes in Migrate to handle this, I built a few simple classes myself. More »

When troubleshooting queries built with Drupal 7's Database API (affectionately known as "DBTNG"), there often comes a time when I need to see the actual query that's going to be executed in the database. Here's a quick and handy tip to assist query troubleshooting. More »

Drupal's permission screen has loads of checkboxes. And if you've got lots of roles and you're using something like Forum Access, you'll find yourself clicking 'till the cows come home. Fortunately, there's an easy solution—CheckBoxer, a Google Chrome Extension. More »

Here's a little snippet to move a menu link from one menu to another. For example, let's move the Contact Us link from the Primary Links menu to the Secondary Links menu. All you really need to know is the internal name of the menu where you want it to move to. More »

I frequently export field definitions so I can programmatically create them in an update.php function. In Drupal 6, the CCK module came bundled with a Content Copy, but (so far) I have found no similar tool in Drupal 7. Here are the tricks I use to do this in a quick an relatively painless way. More »