On November 1st my wife and I launched TraumaAdoption.org as a way to support the foster and adoptive community--particularly those who have adopted or foster kids from tough circumstances. We decided to build the site rapidly in Drupal using Core, Contributed Modules, and a Contributed Theme. It took less than two weeks in our spare time.
After completing the site, it seemed like it would be good to write a series of posts on the basics behind how we did it.
Building a Drupal site can be done very quickly and inexpensively under the right circumstances. You need no programming or CSS skills and limited skills using FTP as long as you are willing to make compromises. Yesterday, my wife and I launched Trauma Adoption after about a week of effort in the evenings. There is still more to do on the site, but it was very quick to put together. First, some assumptions.
The steps...
A) Obtain a domain and secure hosting. There are quite a few options for domain registration ranging from GoDaddy to Network Solutions. As for hosting, there are lots of options in this realm as well. Personally I use Brownrice Internet but there are lots of other options ranging from dirt cheap to very expensive. In this recipe, all you need is FTP access.
B) Sketch out what you want the site to do and the main areas that people will go to. For example, in TraumaAdoption we knew that we wanted:
What we have here is user roles/experience at the most basic level. In developing client sites at pingVision this process is much more comprehensive but the idea is the same. Figure out who can do what and where.
C) Gather your resources!
From the Modules section on Drupal.org:
Get yourself a contributed theme from Drupal.org's Theme Repository. You may want to download several and enable each of them to see what you think.
D) Setup MAMP, LAMP, or WAMP depending on what platform you're local computer is so you can work locally. You can follow the instructions that I set up for a local install on a Mac. Those instructions are for Drupal 5.x, but they will work fine for Drupal 6.x as well.
Once you have your local install ready...it is time to start constructing. The next installment of this series will involve basic configuration of your Drupal installation to get down to building.
Now that you have all your resources together and you have an instance of Drupal running, it is time to load up your your modules and your themes.
A) Set up your instance Go to your /sites/all directory. Create a modules and themes directory in /sites/all. Put the contrib modules into the modules folder and the themes that you downloaded into the themes folder.
B) Fire up *AMP and pop over to /admin/build/block to see what regions you have to work with. Regions are areas where blocks can be placed from the block menu.

Blocks are areas that you can display information. They can be lists of nodes, advertisements, snippets of HTML, snippets from sites like flickr or twitter. Once you know where your regions are, you can start sketching out what you want to go where within the general layout. This basically the wire framing process.
When engaging in wire framing at work we start from the idea that anything can go anywhere on any page. When using a contributed theme that you don't modify, you are going about the process a bit backwards. You need to map out where you want your elements to live limited by what the module contributor has built for you to work with.
C) I generally enable a mess of modules at this point. Go to /admin/build/modules
After these are enabled I go back and enable
D) Now we can start to place the blocks that you want to use on the site. We haven't enabled Adsense yet--we'll get to that later, so you'll want to create place holders. Some blocks are generated by modules. Other blocks are created by the site administrator.
Creating basic blocks is very easy.
You might want to do a few as place holders for ads.
In the case of TraumaAdoption.org I also created two bulleted lists using HTML -- one with ten items for Offsite Links and one with five items for Books. Each of these will ultimately be replaced with a view. More on that later.
On /admin/build/block you can start to drag and drop your blocks to the places you'd like them to live. Each of the regions will be labeled. Disabled blocks are at the bottom menu. Remember to click "Save Blocks" at the bottom of the screen or your changes won't take.
Now your site is basically blocked out. The next installment will review building basic content types.
The next step in setting up your site, is to create content types over and above any "out of the box" content types like blogs, pages, and forums. On TraumaAdoption we created:
as custom content types using Content Construction Kit (CCK). The process is of creating a new content type is quite simple.
You now how your new content type. Repeat this process for each content type you need.
The next installment will cover creating Views for your content types to create pages and menu items for those pages. Views can also create blocks, so we'll look at how to make blocks and place them where your placeholders exist right now.
After you have your content types set up, you can use Views to create custom pages and blocks. In the case of TraumaAdoption.org we created a couple of pages and a few blocks with lists and pagers at the bottom. This post won't cover more than just the basics of using Views. Greg Knaddison did a great screencast on using Views.
The current version of Views has a pretty steep learning curve, but once you've learned the basics the amount of power to control outputs without being a developer is pretty significant.
We'll walk through the steps to create a simple page and a block with node titles.
The Steps...(Save OFTEN while going through these steps)
If at this point you click on Analyze, it will indicate that you've done everything that you need to do for the default View, but that you don't have a page or a block yet.
The default view will work great for a page. Up top on the left, leave the pulldown on "page" and click "Add Display".
You now have a simple page view set up.
Now lets create a block. Up top on the left, change the pulldown to "block" and click on "Add Display".
Your Block Menu /admin/build/block should now have your new block. If you drag it to a region and update it, it should show up in that region.
When you are creating your block or page you will sometimes be given the option to override or modify the default view. If you want to leave the default view alone to work from, use overrides.
Thanks to Merlin of Chaos for developing and sharing Views.
The next post in this series will cover all sorts of small sundries to start buttoning up site details.
So far we have gathered our resources, blocked out the site, set up content types, and created some simple views to display that content. In this post, we'll look at:
Targeting a Landing Page
Unless your site is purely a blogging site, you probably will want to target something other than Drupal's river of news. Any page on your Drupal site can become that default landing page. You can create a page using the page content type that has any kind of introductory text--perhaps embed a photo. After you have created the page that you want to target, go to: /admin/settings/site-information and scroll to the bottom. Replace "node" with the page that you want to target. While on this page, you could update your site's name, mission, and so forth.
Setting Up a Google Ad
Setting Up Some Basic User Types
Terms and Conditions
In the second post we enabled checkbox validate and legal. This automatically gives you a terms and conditions page on the site and it requires that your new users accept those terms and conditions before accessing the site fully.
Remember at this point to head over to /admin/user/permissions and ensure that all the roles are set up to "view terms and conditions".
The next post we'll finish things up!
Last but not least, we're going to look at:
Spam Control
I've been using Mollom a fair bit lately. I think it works quite a lot better than simply using a Captcha. You can get instructions on setting up Mollum in a previous post.
XML Sitemap
An XML sitemap gives search engines a map of what to index. Earlier this year I posted instructions on setting up a sitemap.
Metatagging
The Nodewords Module will help you set up proper metatagging of your content in Drupal.
Pathauto
In the second we enabled Path and Pathauto.
Fivestar Ratings
We've already enabled the voting API and Fivestar.
Service Links
Setting up social bookmarking links is as simple as allowing for basic fivestar ratings. We've already enabled social bookmarking.
At this point we have gone through the process of planning out the site, downloading and enabling both modules and themes, setting up blocks, creating content types, creating views to display content from the content types in on both pages and blocks, setting up a home page, placing a google ad, set up terms and conditions to use the site, enabled some spam control, set up some basic SEO, made our URLs human readable, and allowed for social bookmarking.
The final step is to add content and moving the site to your host!
One of the sites I help manage has been over run with World of Warcraft spam in recent weeks. It has been relatively easy to ban email addresses of offending users, remove the comments, and move on. Add to that, use of Captcha, and the Spam has been kept in check.
I don't want to actively manage spam.
Dries Buytaert (founder of Drupal) and Benjamin Schrauwen created Mollom. It is kind of Captcha on steroids. Mollom monitors the content being posted on your site and allows it through, blocks it, or confronts the user with a Captcha.
Mollom claims (as of today):
Mollom is currently protecting 4187 websites. The average efficiency is 99.72%. This means that only 28 in 10,000 spam messages were not caught. Mollom has caught 7,989,577 spam messages since it started. Today we caught 13,040 spam messages. On average, 76% of all messages are spam.
So, how do you set up Mollom on a Drupal site?
I've set Mollom up on a Drupal 5 and a Drupal 6 site. In the upcoming days, I'll be interested to see how much spam gets caught and how much time it saves me. Hopefully lots!
Drupal naturally does well in search engine rankings. There are a few things that you can do to help improve those rankings like using Pathauto, XMLSitemap, and Meta Tags. I've written a little bit about Pathauto and XMLSitemap and now--Meta Tags.
Metatags are less important than they used to be in SEO. They are subject to abuse with most search engines relying on keywords on a page rather than relying on meta-data to determine what a page is all about. That said, adding meta-data to your site can't hurt your rankings and can help.
The Meta Tags module allows you to easily meta tags to your pages potentially improving your search engine rankings.
This module allows you to set some meta tags for each node, view or panels page.
Giving more attention to the important keywords and/or description on some of your nodes allows you to get better search engine positioning (given that you really only provide the keywords which exist in the node body itself, and do not try to lie).
Step 1 -- Install the Module
Step 2 -- Use the Module
Once it is set up, you will find a new fieldset on your /node/add pages called Meta tags. You can enter a few keywords that describe your content and a description field. That field will use your teaser if no description is entered into the field.
There are two main kinds of search engine optimization (SEO)--Off Page and On Page. Off Page optimization relies on the links you get from others increasing your page rank.
On Page optimization can include:
Creating a sitemap in Drupal is extraordinarily easy using the XML Sitemap Module.
Your sitemap will show up at /sitemap.xml
If you want to be proactive with your sitemap, you can submit it to Google using the Webmaster Tools. From the dashboard add your site to your profile. After your site has been added, then add your sitemap under Sitemaps -> Overview ->Add Sitemap. A pulldown will allow you to identify what kind of site you are submitting. Add sitemap.xml to the text box and click on the Add button. Google will shortly download your sitemap and will begin processing it.
Sitemaps can be helpful if your site: