My Drupal Experience
Just last week, I gave a quiet launch of a new redesign/rebuild of D-Jam.com. For those who don’t know, I started that website over ten years ago when I had big dreams of being a superstar DJ. While I found more success in web design and development, I still like to make DJ mixes and keep the site around as a testing ground for my capabilities.
Beyond a fully responsive layout and some content updates, the biggest change in this site is my moving from a custom-built content management system (CMS) to the open-source CMS known as Drupal. Increasing demand from potential clients for Wordpress and/or Drupal skills were a driving factor for the change, but it was in how Drupal evolved that made me rethink my view on these open-source systems.
My past with Drupal
Now this isn’t my first time touching Drupal. Years ago, I was enlisted to update a website for a charity that used Drupal as their CMS. I mainly had to install a multi-language module, add in new content, and make other edits to various blocks and menus. At that time it was version 4 of Drupal (the current version is 7), and honestly, it felt like I was working on this:
It just seemed like for any changes I wanted to make, I had to go and literally flip fifty switches to implement. I’d add in content, then have to edit a menu to show said content, and other blocks connected with it all. Nothing seemed to work smoothly, and many items were difficult to find in their system. Granted it could have been my lack of experience at the time, or a bad build bringing all the trouble.
That poor experience had resigned me to building and using my own custom-built CMS for new clients. I would only do Drupal and Wordpress work when a client needed help fixing/tweaking/updating their built systems, and half the time it would be short jobs fixing a mess that was created. I felt these terrible development and user experiences outweighed the supposed convenience factors many claim of Drupal and Wordpress.
What changed me
The moment I changed my opinion was when I encountered a build of Drupal 7. Namely, it was the Content Types feature that drove me to want to dive into Drupal again. In the past, my biggest criticism of open-source systems is in how you were trapped crafting a site’s content as either blog posts or pages, nothing more.
With Content Types, I could now build organized forms for clients to easily enter in their own content, nicely separated any which way I choose. In many ways, this is what I was doing on my own custom-built CMS, but now I'm doing it in an open-source platform. I’ll tell you, I’m hooked now and can only fathom building with Drupal from now on, as I have two more sites on deck to be built.
What I learned
Ask any Drupal developer and they’ll tell you there is a stiff learning curve to the system, and that’s no exaggeration. In developing D-Jam.com in Drupal, I hit many frustrated occasions where I was ready to hit the delete button and go back to my old system, but I persevered to finish what I started.
Looking back on my recent experience, the first big piece of advice I would give is to learn decent PHP coding. Granted, you could just pick a ready-made theme and tweak it as so many do, but when you really want to get into customization, you can’t avoid coding. I was thankful for all the years of experience I’ve had in coding PHP, thus making it easier for me to write functions and other code to tweak the system.
The second big tip is to learn overrides. You’ll constantly hear “never hack the core”, which means you do not alter or edit the Drupal build, but instead copy and rename files and functions to add or change functionality to your needs. Thus when you update your Drupal version, you don’t destroy your work.
From there, I’d toss in to be familiar with available development tools. Modules such as Themer and the Admin Toolbar were priceless in helping me identify functions and files, and giving suggestions for naming new files and fuctions for overrides. I know just trying to build without them was a misery, and you’ll see tutorial after tutorial showing experienced developers using these tools.
Moving on, I’d then say to look into Views and/or Panels. The Views module helped greatly expand how I organized and display content on D-Jam.com. They allowed me to pick pieces of data to show from a Content type, and even set up the final polished HTML that is brought into the page. Both the home page and main listing pages for mixes and tracks were made with Views. Adding to this, I’d also advise to watch how many modules you install and run. It can be so easy to end up with loads of modules running in the background, slowing your site down dramatically.
One big tip I really want to push is to fully learn to update a Drupal build. In the beginning, I actually messed up a site in progress because I failed to fully learn how to update Drupal. It’s not just pressing an update button, but a full backup of your files and database, then running a script. Git users though can use Drush to speed up this process.
Is this end of my CMS?
With my wonderful Drupal experience, it would seem my days of crafting a custom-built CMS would be over, but I wouldn’t go that far just yet. There are occasions where even a beast like Drupal would be too much for the client who needs a simple system for him to update his own content. Thus I’ll pull out my simpler system.
However, I think it’s safe to say I won’t reject the open-source systems the way I used to. I’ll continue to build with Drupal and offer it as a possibility for my clients. You’ll definitely see more Drupal-powered sites appearing in my portfolio in the near future.
Do you use Drupal? What development advice would you offer?