Screenshot of a website
Blog

Upgrading EvolvingWeb.ca to Drupal 7

We are excited to announce the relaunch of evolvingweb.ca, upgraded to Drupal 7! There was so much excitement the first week of January about the official release of Drupal 7, that we decided to dive in and upgrade our own website. Following the directions on drupal.org, the upgrade from Drupal 6 to Drupal 7 roughly involved the following:

Upgrade Process

  • Upgrade all modules to the most recent Drupal 6 release
  • Figure out which modules are available in Drupal 7
  • Replace Drupal 6 core and contrib modules with Drupal 7
  • Run update.php
  • Use CCK's Content Migrate module to update the CCK fields
  • Reconfiguring views, modules, imagecache presets, and content types as needed
  • Create a new Drupal 7 theme

Research & Planning

Overall, the upgrade went very smoothly. I made a list of all the modules we were using, which ones had Drupal 7 versions, and which ones were now part of Drupal 7 core (yay!). It's amazing how much energy module maintainers have already put into Drupal 7. For our simple website, there were only a couple of modules that weren't available. The only missing module that seemed critical was i18n. Luckily, our site's multilingual requirements are not strict. Drupal 7 core has a rich set of features for creating and translating content, and providng translations of interface strings. The new site is missing i18n features like i18 variables, multilingual menus and blocks, and the logic for the language switcher isn't perfect.

Content Migration

The CCK text fields were easily migrated using CCK's Content Migrate module. Logan submitted a patch to the Content Migrate module which fixed our issues with upgrading image fields and node reference fields. As websites get upgraded to Drupal 7, I'm sure the process of migrating fields will become smoother.

UI Improvements

While working towards launching the site, I started appreciating a whole bunch of the Drupal 7 features that have been in the works for so long. It was really satisfying to get in there and use them on a real site. The improved UI for things like input format selection, field display settings, and interface translations felt so natural. And I could really appreciate the power behind new features like built-in image styles and fields for users.

Theming Improvements

The default Drupal templates are also much improved, making the process of theming a simple site like this one a breeze. The new way of changing what gets rendered in the theme layer - using renderable arrays - is another easy-to-appreciate Drupal 7 feature (see http://drupal.org/node/930760).

Tips & Tricks

There are some tricky things to watch for in the upgrade process. You need to configure content types to determine which menus they can be added to (i.e. configure pages so they can be added to the primary links menu). Otherwise, editing a node will make it disappear from the menu. You also have to keep track of the imagecache presets that you upgrade to image styles. We had images embedded in content that used imagecache presets. The paths to these images needed to be updated to the new 'Image Styles' paths.

Another thing you'll need to invest some time in is reconfiguring views. Upgrading CCK fields will require re-adding these fields to your views. But, configuring views is fun, and if you're doing a redesign as well as an upgrade, you'll have to be making changes to how your views are configured anyway.