Expert Drupal and PHP Web Development

Steindom offers professional web development services for businesses of any size. To discuss your particular need, please contact us at 573-340-3276 or via email.

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 »

Sometimes you have to work with HTML which is not structured in semantically meaningful ways. Here's a quick code snippet for finding the HTML between two DIVs using PHP's DOMDocument and DOMXPath. More »

Want to save some time when creating new Craigslist posts? If you've got a pile of stuff to sell on Craigslist, here's a quick tip to save lots of tedious typing and clicking. 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 »

Today I launched a new service called (taking advantage of the new .pw domains). It's a random password generator, with lots of customization options to help you find a memorable but secure password, and it even has a password strength checker. More »

Sometimes I have repositories with folders that will only ever contain files considered to be "content"—that is, they are not files that I care about being versioned, and therefore should never be committed. With Git's .gitignore file, you can ignore entire directories. But there are times when having the folder in the repo would be beneficial. Here's a excellent solution for accomplishing this need. More »