22 Excellent Tips for New Drupal Developers

In the Getting Started with Drupal guide, you were given a step-by-step walkthrough for setting up and using Drupal, the popular open source content management system (CMS). In this article, I’ll share some basic tips and tricks geared towards new Drupal developers.


If you haven’t already, consider first reviewing the official reference on core concepts before delving into Drupal. If you don’t have Drupal set up yet, go over to the Getting Started with Drupal guide.


Another place to find help is in the Drupal Forums; search for the specific answer to your specific question. Here are some tips for posting to the Drupal forums.

While Drupal is not for everyone, it is a popular platform that helps accomplish many common goals for website owners.

1. Install Drupal Quickly Using Profiles

Drupal comes in the "core" format as a standard download from the official website (click the "Download" button on the Download page at for the most recent version).

However, if you have a specific need, say a news site, or a political campaign site, consider using one of the contributed profiles or distributions that have been built off thousands of hours of development time from other coders. These pre-configured bundles have certain modules, themes, or pre-built functions that allow you to get your ideal site up and running, instead of you having to physically download and configure multiple modules to extend Drupal core.

Install Drupal Quickly Using Profiles

I use the Acquia distribution, which comes with many modules for a complex site with moderate to high functionality.

2. User #1 is Important

Take good care to record the username, password, and e-mail address of the first user (typically the username will be admin). This is user number 1 — the owner of the site — and you’ll periodically return and log in as this first user to keep the site up-to-date. It’s also important to secure this account because it holds a lot of power over your Drupal installation.

3. Know the Basic URL Structure for Drupal Content

Once you have a basic installation in place, you may create new content by navigating directly to this URL (where is your domain name):

Content within a Drupal site are called nodes. A node may be an image, a page, a story, an announcement, a poll, a web form, or a job listing — you can think of a node as a single unit of content. For example, if you want to create a new page, you can go to the following URL:

Know the Basic URL Structure for Drupal Content

Once you create content, you can find its nid (node ID), which is a unique identifier for that node, in the URL. To determine the nid through the URL of a web page, just use the following URL structure as a guide, where [nid] is the node ID of that page:[nid]

In the following image, the nid is 2.

4. Google Is Your Friend

Right from the beginning, you may have installation errors, mostly because your local development environment, i.e. your installation of Drupal in your computer, may be different from your remote hosting environment, i.e. where your Drupal site will be hosted.

Whenever you encounter a Drupal issue, Google is your friend. Copy and paste the exact error message, and consider putting the search term inside double quotes so that Google does a literal search.

5. Customize Your Site’s Error Pages

The default error messages Drupal gives your users when they navigate to a web page that they don’t have permission to view or a page that is not found can be intimidating and not really useful. Configure the language of your 403 Access Denied and 404 Page through this URL:

6. How to Troubleshoot the "White Screen of Death"

When you navigate to your Drupal site and you see nothing but a white blank screen, playfully nicknamed white screen of death (probably as a reference to Microsoft Windows’s blue screen of death), it typically means that Drupal encountered a PHP error. Many things can cause this, and it usually has to do with a development error. Even a missing semicolon can trigger the white screen of death.

If you find yourself with a completely white screen (blank), you’ll want to enable PHP error reporting so you can find where the issue is being encountered. For more information, read this tutorial called White Screen of Death.

7. Install the Administrator Menu Module

If you didn’t use an installation profile and you aren’t using Drupal 7, install the Administration menu module (admin_menu).

Install the Administrator Menu Module

It’s is a dropdown menu at the very top of the administration pages that links to admin pages, making it easier to find your way through the maze-like administration pages.

8. Back Up Your Database in a Safe Location

The Backup and Migrate module is perfect for grabbing an SQL dump of your database for storage or if you need to move it from one host to another. I recommend storing these backups on a separate location of your site. For small sites, you can even get away with emailing the SQL file to yourself and storing it there. Not recommended for security purposes (since if your email account is compromised, then your site’s content will be exposed), but it just illustrates the types of places you can store your SQL files.

9. When Something Goes Wrong, Flush Your Cache

Drupal creates caches of your content so that every time a page is requested, it doesn’t have to generate it dynamically all of the time, reducing the amount of PHP processes and SQL queries being made, which in turn increases the performance of your Drupal site.

However, if your site acts strangely or you can’t see your theme edits during development, use the Flush Cache function. Flushing your cache clears out your Drupal cache and allows the site to rebuild itself with up-to-date information.

When Something Goes Wrong, Flush Your Cache

The Drupal cache can also be disabled temporarily while you’re still in development under the Site Configuration page, under Performance.

10. Explain the Concept of Content Types to Clients

One of the biggest challenges for your client is to understand the different types of content on their site. From the perspective of the end-user, a page of staff biographies, or a page of announcements, or a page of recent events all behave the same, so it might be difficult, for example, to explain why a Story is different from a Page.

But in order for end-users to really use their system properly, this conversation needs to happen at hand-off.

One thing to note is that they can create new types of content by going to Administer > Content types > Add content type (tab).

From Drupal’s point of view, breaking down the site into unique content types, the site owner can easily make cascading changes for one content type. You could, for example, change commenting settings for a Page that would be different for a Story.

Each of the different nodes within a specific content type may then be displayed on the front-facing sections of the Drupal site using Views (more on this later).

By understanding what kinds of content will be used on the site, you can create "content types" to match. When you do the initial discovery phase with your client, help them break down all the content they want on their site into specific "content types."

Explain the Concept of Content Types to Clients

11. Understand User Roles and Permissions

Once you have a grasp of all the modules you’ll be using, as well as the content types, then you may specify what types of users ("roles") you’ll have on the site and which permissions those roles have.

Understand User Roles and Permissions

You can configure user permissions via:

The default Drupal user roles are as follows:

12. Understand Basic Theme Development Concepts

There are hundreds of themes available for free download, paid download, or for unique customization from a design comp created by your web designer. If I’m doing a custom theme, I usually use a modified version of the Framework Theme as a base, with all additional graphic design elements (PNGs, backgrounds, icons, photos and logos) coming from Photoshop and with CSS edits directly to the stylesheet.

A theme is made up of these major parts:

There may be some additional *.php files such as block.php and/or comment.php if you or the theme designer decide to specify the layout of those elements.

13. Know Some Places for Getting Free Themes

Sometimes your client will be able to find a theme that fits most of their needs, and you can do additional customizations to the CSS. If they would like to download public themes, I typically encourage clients to visit the following links.

Free Themes:

Premium Themes:

14. How to Install a Downloaded Theme

To enable a downloaded theme, first move the unpacked file into a new directory:


How to Install a Downloaded Theme

Next, choose your theme from Administer > Site Building > Themes or by navigating directly to this URL:

Choose which theme you would like as the Default and which ones you would like to have Enabled. If a theme is Enabled, it means it can be set as the Default.

15. Don’t Forget to Set Up Basic Site Information

Some standard information gets collected and displayed on your basic Drupal setup, such as the name of the website, the e-mail address for any system messages, the slogan, mission statement, and text in the footer message.

Don't Forget to Set Up Basic Site Information

This information can then be called using the Drupal API in case you need to print them out on certain Drupal pages.

You can set and view these through Admin > Site configuration > Site information or by navigating directly to this URL:

16. Always Set Up Clean URLs

Drupal, by default, uses unfriendly system URLs to refer to your web pages. For example, navigating to a page may look like this: Not very user-friendly or indicative of what the content is. It is also not very good for SEO.

To solve this issue, enable Clean URLs by going to Administer > Site configuration > Clean URLs or navigating directly to the following URL:

Always Set Up Clean URLs

17. Install a WYSIWYG Module

Your clients will demand an interface that allows them to compose their content easily and without knowledge of coding. Creating content should be as easy as writing and sending an email. There should be a GUI for doing things like bolding, italicizing, underlining text, creating bulleted lists, creating hyperlinked text, and so forth. I’m recommending the CKEditor module for handling WYSIWYG functionality. It is the successor of the popular FCKEditor. Try out the demo and read the project’s documentation for more info.

Install a WYSIWYG Module

CKEditor comes in two parts:

  1. A "wrapper" module: CKEditor for Drupal
  2. The main required component, which you can download directly from the CKEditor website

18. Deploy with a Contact Form

Most of our clients require some sort of web form, and it’s usually going to be a contact form for their site users to be able to message them. Drupal core has a pre-built contact form, and it’s best to enable it and make necessary changes to it prior to deploying the Drupal site.

First, you must enable the Contact module, which is an optional core module. Then, to configure the contact form, go to Administer > Site Building > Contact Form or navigate directly to:

Notice in the image above that you may edit many parts of the contact form, such as the different types of contact form categories available and different addresses to send a message, depending on its category. This could be very useful for multi-user sites, where you can have a category regarding advertising forwarded to the sales team and a question about technical support forwarded to the IT guys.

19. Manage Your Navigation Menus

Drupal comes pre-configured with three menu blocks:

  1. Navigation links – provided by Drupal and the main interactive menu with personalized links
  2. Primary links – major sections of the site, typically like the tabs across the top of the page
  3. Secondary links – an additional set of links for items like legal notices, contact details and other less-important navigational elements

You may manually edit these menus by using your Menu manager via Administer > Site building > Menus > List menus or navigating directly to:

Alternatively, you can add a new node, and from the data entry page, you may add that new node directly to the menu: just specify the desired menu and the text to appear within that menu.

Manage Your Navigation Menus

20. Learn to Love Views

Using Views gives you a terrific amount of control over the tedious task of creating displays of your information. Using the Views editor, you can filter your available nodes and publish them in various styles such as tables, grids, or lists, and sort them in the manner of your choosing.

For example, from a content type of "people", you can use Views to specify any of the following from the same set of records:

Learn to Love Views

I recommend reading this tutorial called A Beginners Guide to Using Views. Also, the Getting Started with Drupal: A Comprehensive Hands-On Guide walks you through the creation of a view.

21. Partner with a Hosting Provider You Trust

Obviously, if your hosting provider does not have experience or a reputation in hosting Drupal, consider switching to a host with excellent tech support and a responsive team that understands your concerns, as well as those of your clients.

I use Nexcess for all of our Drupal sites — their control panel is easy to use, they’re knowledgeable, their tech support team responds quickly, and they are set up to grow along with you.

22. Create a Checklist for Launch

After you’ve configured your modules and fine-tuned your chosen theme, finished your data entry and user testing for quality assurance, it’s time to soft-launch the website.

Here is my final checklist of items to review prior to the launch.

Cron job

Ask your hosting provider to help you set up a cron job. They will direct you either to a back-end manager or they will walk you through the process. Drupal’s default cron script is located at /cron.php.

Rewriting htaccess

Specify if your site will be something like this: or something like this: These are considered different "entities" by search engines and the process of creating a main (canonical) URL is an ongoing challenge.

Setting the base URL

If, after you rewrite htaccess, you find yourself still having issues, review the site’s base URL. Seek this line in settings.php:

# $base_url = ''; // NO trailing slash!

And change the $base_url variable assignment to your own website.

Performance caching

Once live, your website may benefit from caching to improve page response times. Use the caching function to help reduce calls to the database with every single user, on every single page. If you turned it off during development, turn it on again by going to Admin > Site configuration > Performance or navigating directly to:


There is a lot of ground to cover when you’re first getting accustomed to using Drupal. Find the types of functions that most match what your clients ask for, and then find a set of well-supported modules (multiple downloads, responsive maintainer) to use in your toolkit for deploying content management systems.

Related Content

About the Author

Monica S. Flores is a web developer through 10K Webdesign, which focuses on websites for progressive organizations and membership groups. She founded a member community for success-oriented women ASuccessfulWoman and one of the first green business directories by and for women GreenBusinessWomen. Contact her through Twitter.

This was published on Nov 30, 2010


Drupal is great for a lot of things, but it’s so not user-friendly. Even Drupal7(Prerelease) is miles off what other CMS’s have achieved.

Don’t get me wrong I enjoy working with it, but rolling it out with users is mind killing. It has no good WYSIWIG’s, and users just get confused working with it, rather than be able to go ‘add content, write it, choose options, go’. You have to set up a stupid amount of crap, etc etc etc.

thanks for this, do you have any suggestions doe drupal tutorials, screencasts,etc…

Treefingers Nov 30 2010

Don’t forget the favicon! I’ve seen a few otherwise great sites that still have the little drip in the address bar. :)

Tim Millwood Nov 30 2010

The things to said against Drupal are the main reasons I like it so much.

Great! I can choose the one that is best suited to the client and content creator.

Setup stupid amounts of crap
Great! I can tailor the site to the audience.

If your users / clients get confused with Drupal it just shows that as a developer you haven’t configured it right for their needs. Either they didn’t have the budget for you to do this, there wasn’t time to do this or you don’t know your audience.

Drupal can do anything you want it to, you just need to put the the time and effort in to make it do what you want, and like all good developers do, if you are going to do something more than once make a script to do it, either as an install profile or a module.

Kiran Voleti Nov 30 2010

Wonderful post on Drupal.It is one of the best open source platform.

DixHuit Nov 30 2010

@Luke & @Tim.

I agree with Luke. 2 things:

1) Drupal can use a multitude of WYSIWYGs in different configurations if you want it to. It’s up to you. Few other CMSs allow this.

2) Having total control over roles, permissions and the entire admin client experience is one of Drupal’s greatest strengths (one that few other CMSs have). Used correctly, it’s very good for deploying to clients as you can a) give them what they want and b) hide what they don’t need to see.

Drupal 6 beats all other CMSs hands down. Drupal 7 is going to be very hard to catch up with.

DixHuit Nov 30 2010

Oops, I meant that I agree with Tim :)

Jeanne Nov 30 2010

Thanks for this and for the information and links to other Drupal learning resources. I love Drupal because it’s so configurable. Once everything is set up, I think it’s more user friendly than people make it out to be. I’ve set up roles in the system to only allow users to see and do what I want them to see and do. It does take a little bit of time on the developer’s side, especially with views, but it’s very versatile because of that.

Drupal has come on leaps and bounds since I last checked it out – the CCK module especially.

This list has inspired me to have another crack at it and try out out on my machine.

Graham Nov 30 2010

If you have shell access (SSH) for your website, you really should install Drush, which gives you a very fast way to install/uninstall modules and themes, and update your Drupal site and modules to their newest versions.

Laura Scott Nov 30 2010

Great suggestions. But I would hesitate to recommend #1 to people new to Drupal, as some Profiles can be quite difficult to augment and update. n00bs would quickly find themselves in the deep end of the pool. Victor made some good points on this here.

Nice article — thanks for posting this. By the way, you may want to mention that the SEO URLs are not so much a result of using the Clean URLs module, but instead the Path and the Pathauto modules.

For excellent Web hosting, I recommend, which is what I use for my own sites and all of my client sites.

昆仑 Nov 30 2010

Nice post! There is a few modules that I also can consider as basic:

* Context: will let you take fully control of the display on your pages (not panels please).
* Features: really handy to roll out some new custom features or properly configured contributed ones.
* Devel: help you with the debugging and give you a quick way to switch themes, users, clear cache, etc.

And also I will advise to:

* Make a clean install of Drupal and setting up the Modules and Themes folders outside of the Drupal folder (to have an easier upgrade).
* Use a simple theme for the administration interface (such as Rubik).

And as Tim said, if there is some issues it is because it has not been properly configured.

Marcell Purham Nov 30 2010

Great article! Drupal is very hard if you’re new to it but once you continue to work with it it becomes much better and you get a great understanding of how it works.

everlearner Nov 30 2010

Really excellent tips. Short and get the point directly.
Let me add a few tips more..

1. Need to give proper permission when a new content type is created.
2. Don’t forget to increase php memory limit if the website starting to grow with many modules.
3. How to install a new module?
4. Subscribe mailing list for new security updates.

Want to read more drupal articles like this.
Thank you

i’ve just started playing around with drupal, seems there is a steep learning curve, but it also seems that once you learn how, you can do almost anything using drupal. anyways this post came at a great time for me, cheers

Horace Ho Dec 01 2010

Great tips for beginners! Thanks and congratulations~

Sachin Gupta Dec 01 2010

Great Tips! Drupal is excellent CMS the only problem with Drupal is it is not user friendly. Drupal gives you good platform to work.

Thanks for sharing… :)

Risorsa Dec 01 2010

Great guide , i love drupal and joomla ! the best cms ever !

Steven Dec 01 2010

Why no talk of taxonomy? It is one of the foundations of Drupal.

Also if anyone is serious about getting into Drupal and are willing to spend a few bucks I can recommened the videos by lullabot.

Asher Dec 01 2010

Great to see a Smashing Network post on Drupal. I think this article does a pretty good job of describing some basic tips, I agree that #1 may be a bit optimistic for a noob to correctly use an installation profile, but hey, nothing wrong with optimisim. I would add 2 things to this list–1)check out and don’t be afraid to post to the forums for help–drupal’s community is a GREAT resource. Also don’t go crazy searching and trying all kinds of modules, get expert advise here

Other than that have fun, and remember Drupal 7 needs PHP 5.3, Drupal 6 needs PHP 5.2, you can get this information from your hosting provider.

Thanks a lot.
I respect you.
Drupal is excellent platform for website.
I will study more Drupal, I need your help.
God bless you & your job.

Thanks for your contribution… -_- :)

Accelerant Dec 01 2010

Great post. I wish I had seen something like this when I first started using Drupal

The “Contact” module is pretty bare-bones – we’ve been installing the “Webform” module even for sites with a single contact form.

Eventually the client will always ask for an additional field (phone, fax, company, etc) which is much easier to add using Webform. Plus Webform records submissions.

Also I’d recommend newbies start with the Acquia Drupal stack – it’s a Profile/distribution from Acquia that has a ton of useful modules preinstalled.

Julio Aguilar Dec 01 2010

Good list!
I was not aware of number 8 and my order would differ in certaing things but I agree with almost everything here.

I’d say is your friend but using google sends me to drupal site most of the times I’m looking for a “how to do …”

I agree with the people who complains about Drupal complexity and it’s out-of-the-box bare state compared to the alternatives. (Even Plone has better funcionalities out of the box and I would consider it a more complex CMS)

I’d hesitate to recommend Drupal if all you need is a CMS for a simple site or a blog and you are willing to bet that is all you’ll need; but if you are developing a complex site or you might want to add certain funcionalities later it’s great to be able to control so many things. The architecture is not that hard to understand and there is a good community around it.

Extra tip: Bitnami has easy installers for several platforms with the same default install so you can learn it from the bottom without having to learn much of Apache and databases along the way.

Sanjay Gurung Dec 02 2010

excellent tips for new beginners…very informative to read :)

The reason a lot of people are saying negative things is because you still consider it to be an out-of-the-box CMS.

Drupal is not a “CMS” per se. It is a framework that can drive a CMS or almost any other site. It has a little too many things that are CMS specific in core, and it is considered a CMS by many, but I believe it is more a “framework that ships with CMS capabilities included” – it doesn’t do anything specifically well by itself, it does a lot of things “okay” but gives you the capabilities to extend specific features.

I would go as far to say that no “CMS” products out there allow for the customization and extensibility that Drupal provides.

I am not a fan boy – far from it. Coming from a heavy procedural PHP background I am still not able to make basic things work how I’d like, I find it too UI-specific for certain areas, and mixing markup inside of UI fields and the separation between theming layer and markup in the database and created by modules (like views) is one of my main annoyances.

I go into this a little bit more on my blog:

Michael Cole Dec 03 2010

Want a quick Drupal/PHP dev or theming working environment?

As an alternative to WAMP or MAMP, check out Drupal Quickstart.

It’s a downloadable pre-configured virtual machine that can run in a window on your laptop’s desktop.

Starter Youtube videos linked from the project page.



You can find other good video tutorials here:

unfortunately they havent published new tuts since august :/

Bala K Jan 19 2011

Nice tips, Monica.

How can one provide a link, say in the Navigation Menus, to apps on the same server?

Say the webroot is /var/www/html, and the other app is otherApp.php

Monica S. Flores Jan 23 2011

@Bala K – wouldn’t you just put the link to the URL directly, as a new navigation menu item?

e.g., do a try with or

in your case it would be assuming that otherApp.php is hosted in the html subdirectory.

Pixel Air Jan 29 2011

Great post Monica. Very comprehensive indeed.

I’m so relieved that I already do ALL these things! I was hoping to have found a few new tips and tricks…but it’s reassuring that I’m doing everything right!! More posts please!

Bala K Feb 09 2011

Monica, thanks for replying. I was trying to get a relative address (‘this’ server), rather than hardcoding the site URL, since the same site was accessible both internally on the LAN using an internal IP/hostname, and externally using the URL as registered in public DNS. I wanted to see how to say ‘me’ or ‘this server’ on Drupal – referring to the root of this server, from where I could take over.

Martin Feb 18 2011

Great and thorough post! One note on cron jobs – Drupal 7 has cron built-in, and for Drupal 6.x sites, there’s a good module called “poormanscron” that will handle those pesky cron jobs for you.

One must-have module as well: menu breadcrumb for 6.x. It allows you to get rid of the “home” breadcrumb at the top of your page if that’s the only breadcrumb in the chain.

Prabhu Chandian Mar 19 2011

Hey these things are really very helpful for me.

Angelo May 23 2011

I stumbled upon this looking for a way to make a new blog and start my web building skills. One thing the article doesn’t mention…how do you install the Acquia core? The Acquia stack is limited to PHP 5.29, but MAMP has the newer versions of Apache and PHP.

I can’t find it anywhere on the Acquia site. Do I just drag the contents into the MAMP htdocs folder?

Kshama Jul 19 2011

@luke I am not agree with you.. Its Up to you how you configure your site .and Drupal has a large community and modules provided on that so its up to you how you utilize those resources

I’m not a programmer but I think I’m capable of figuring out how to make a Drupal site work. I learned Ruby on Rails and was able to get some sample applications working fairly well on my own computer but deploying it scared me off.

I don’t have a clue about things like memory leaks and wary about injection attacks etc… programming consistently enough to never mess up that way is beyond me and I have no clue really about all this bin and server stuff and while algorithms and model view controller stuff, and object based stuff were a snap for me, stuff like version control and version maintenance makes me want to cry while just reading about it so i run off and play minesweeper. (jk).

So, do i need a dedicated server … will building something on a shared hosting plan with their editions work?… can I load my own Drupal version (and does that mean my own php too? ) to a shared server ? I can’t get my head around if I can try to get something going and upgrade to my own server later while maintaining all of the static urls etc .

Ok, long and short.. I’m comfortable with something that’s complicated to build but not comfortable with worrying about people breaking it later , especially if I don’t want to do any maintenance more that a couple times a year when I steel my nerves for it .

Is Drupal right for me? do I need a vps?

Meena Jul 29 2011

Hello Monica!

Very awesome ‘Node’.
All 22 Tips are great and informative.

postscripter Sep 24 2011

I wish I had read this 6 months ago, it would have saved me hours.
Thanks for the post, loved it.

cedric chaux Oct 08 2011

Great tips for beginner , we have all struggled learning all of this and now we are happy web developer designer :)

Shai Samuel Oct 20 2011

Amazing post, great job Monica. Thank you.

Krish Nov 01 2011

Really a good post Monica. Great tips for drupal beginners

I totally agree with Luke (30 Nov). Drupal is a very powerful and flexible CMS – BUT as for usability, it’s a dog (especially compared to other alternative CMS and there is a LOT of competition).

The whole point of a CMS is to DELEGATE content management to the end user. But if you build a content creation/editing interface that only geeks understand you alienate the target audience for your product. Result: customers will either go to the competition or the system admin will be burdened with either content creation/editing tasks or burn hours hand-holding confused end-users.

I have been in IT for more than 20 years and have worked on dozens of CMS systems. We did select Drupal mainly becuase of its power, but boy has it been a painful and steep learning curve (and an unecessary one).

We started with D7 and I do smile when I read how ‘usable’ it is compared to other versions – glad we didn’t enter at that stage!

A plea to the teams behind the Drupal initiative and development: get some non-geeks to test your end-user interfaces – ie dumb it down to the lowest common denominator and watch your adoption rates soar.

Don’t get me wrong, the power and flexibility of Drupal is first class, but you need to put a clever user-friendly interface in between content creation/editing and non-techie end users.

The above written with great respect to all the hard work and dedication by very clever developers in the community.

Björn Aug 19 2013

thanks very much for these overview. after 3 years working with drupal, its helpful and still good to see that i forget some as well. thats drupal, awesome and at some points close to get to big. but awesome anyway.

This comment section is closed. Please contact us if you have important new information about this post.