Menu – Educational and social networking site on Drupal 6

January 18th, 2011 is a website developed by the Independent Adoption Center (IAC) that addresses the issues birth parents face when considering open adoption for their child. The site provides a social network for birth mothers, on-line counseling support, parent profiles, as well as stories, photos, and videos contributed by IAC birth parents. The site was developed in house using Drupal 6, and was made possible by a grant from the Albert & Elaine Borchard Foundation.

Social Support Network

The social networking features of the site give women considering adoption a place to find support and advice from other women who have or are also considering placing their baby in an open adoption. Users can create a profile, make status updates, create blog posts and photo albums, chat with other users, and make new friends. Because this section of the site is accessible only to birth parents, our users can talk openly about their experiences with each other. Using Drupal social communication tools, our counselors are able to engage with their clients in real-time in a non-intrusive way.

Adoptive Parent Profiles

Families working with the IAC can also create profiles on I heart adoption. With these profiles adoptive families can describe themselves in detail, upload photos and letters to birth parents, and link to their website or social networking profiles. Traffic on their profile can be tracked thanks to the Google Analytics module.

Women considering adoption can search and browse these profiles based on their preferences. Searches can be refined by location, family type, religious beliefs, spoken languages, and more. They can exchange private messages with their favorite families, and flag their favorites for future reference.

This part of the website has proven invaluable for our adoptive families. Getting a website on-line was one of the most difficult steps for many families seeking adoption, and by utilizing the power of Drupal we are now able to offer a quick and simple way to create a web presence.

Other Features

  • On-line chat support: Users can chat with our licensed social workers to get answers to all their adoption questions, all without leaving their browser.
  • Facebook integration: Adoptive families can encourage their friends and families to spread the word by liking their profile.
  • Due date calculator: Pregnant women can get an estimate of their due date using our calculator widget.
  • Counselor workflow: Our social workers can monitor the progress of their clients from account creation to publishing their profile, providing feedback along the way.

Why Drupal?

Once we had developed a plan for all the site features, we began to explore ways to implement it. After contacting a few professional web development shops for quotes and comparing it to our total budget for web and TV advertising, we decided to look at options for developing the site in-house. Doing so would allow us to build the site and have plenty left over for an associated advertising campaign.

Some research on how to build such a site quickly led us to CMSes like Drupal, Plone, DotNetNuke as well as some SAAS options like Ning. It was soon decided that having complete control over the software and the server would be a better long term option for our agency, and so we narrowed the list down to the “big three” of Drupal, WordPress, and Joomla!

With the help of many blog posts and some poking around on, Drupal soon emerged as the best option. WordPress was too limited in its abilites, and Joomla! was considered not as SEO friendly. Drupal was given the highest marks by almost every writer we encountered. Ultimately we chose Drupal because it provides:

  • A free, open source platform
  • A secure and highly extensible framework
  • A large and friendly community for support and guidance
  • Existing modules for almost every feature we wanted

Starting from Scratch

When we began this project, none of the team had any experience with Drupal (and the developer had only just learned php), so we relied heavily on the extremely helpful Drupal community. The forums were an invaluable resource throughout development, without which this project would not have been possible. Because its a volunteer community we made sure to give back help whenever we could. The Post-installation forum is a great place a beginner can help out other beginners, and there is no greater way to learn than to try and teach.

Armed with a copy of Front End Drupal, we started development with the theme layer. This turned out to be a great place to begin climbing the Drupal learning-curve. In focusing on the theme, Drupalisms like node, module, and theme hooks began to make more sense. When we were done theming we had a heavily customized user-profile.tpl.php (for parent profiles), and a decent working knowledge of how all the parts of a Drupal site come together. If we could go back, we would use the Content Profile module instead of core profile. On a site focused on profiles like ours, the work would have been greatly simplified if profiles were nodes.

Once the parent profiles were ready, the next big challenge was creating a way for users to search through them. Again, with lots of forum support and a copy of Pro Drupal Development, we dove right in. Our search is accomplished by using Drupals Form and Database API’s to run queries on user profile fields. In hindsight using Views exposed filters would have worked great here, but our experience with this powerful module was limited, and so we built a custom module to suit our purposes. Several more custom modules were created during this time as well (see list below for details).

By the time we got to the social networking features we felt like pro’s. By using the resources in the Drupal community available for little to no cost, we were able to complete this project in-house at a fraction of the cost we were quoted by development shops. It took some extra time and hard work, but for a project with the scope of I Heart Adoption, we felt it was a small sacrifice for a wonderful end product.


I Heart Adoption uses plenty of contributed modules and a few custom ones:

  • User Relationships: Allows birth parents to add families as favorites, and to add each other as friends on the social network.
  • Facebook-style Statuses & Facebook-style Statuses Comment: This fantastic module powers the social network wall together with Views
  • Privatemsg: Lets users send each other messages on the site without disclosing e-mail addresses
  • Chatroom: Creates a chatroom node type for real-time chatting on the social network
  • IMCE: A file manager for users, allows our adoptive families to manage their photo albums
  • Heartbeat: Provides a recent activity block, used on our social network
  • Flag: With flag users can “Heart” status updates, blog posts, and photos
  • Node Gallery: Creates gallery and photo content types to allow photo albums on the social network. Because each photo is a node, it can have comments and Heart flags.
  • Imagecache: Create presets for different image sizes and cache them. An invaluable module for image handling.
  • Token: Insert data dynamically into content. Mostly works behind the scenes to provide functionality to other modules.
  • Rules: An evolved version of the built-in triggers/actions. Lets you define rules to automate site functions, like heartbeat activity messages.
  • Google Analytics: Integration with Google’s tracking technology, indispensable for SEO.
  • Views: Handles display of statuses, should have been used for search feature (see below).
  • Admin Menu: Keeps site maintainers sane by organizing admin links into a compact drop-down menu.
  • Node words: Adds meta tag fields to node edit forms, used here for SEO.
  • Auto Assign Role: Gives new accounts a default role, for when you want the default authenticated user to have permissions that other authenticated roles don’t have.
  • Form Block, Remember Me, Compact Forms: Makes our user registration and login forms prettier.
  • Lightbox2: Presents content in a lightbox, used for photo presentation.
  • Menu Per Role: Allows customizing menu items based on role.
  • Profile Checkboxes: Can turn select lists into checkboxes, very useful for our data intensive profiles.
  • String Overrides: Easy way to change module output without hacking module code or writing theme functions.
  • Unique Avatar: Fixes the common caching problem for user pictures (your sites support staff will thank you).
  • User comment: Provides more fine-grained permissions for comments, allows our birthparents to delete comments on their blogs and photos.

Custom modules were created for:

  • Searching based on family data. In hindsight Views’ exposed filters would have been ideal for our search, but at the time we were unaware of the power of Views. See my tracker for details on this long, hard road.
  • The due date calculator. This module adds a block that depends on JavaScript code for its functionality. We already had this script from a previous site, so we decided to use that rather than start with a calendar module from the contributed modules.
  • A featured family rotation on the front page. This module sets a variable on each cron run with the uid of the profile to be featured (based on various internal metrics). The theme then uses this variable to show the featured profile data.
  • A module to add captions to photos parents upload in IMCE. It creates a database table to store photo file names, image weight, and caption, and uses the Menu and Form API’s so users can edit their photo albums. If we had used nodes for parent profiles and galleries instead of the profile module, there almost certainly would have been a contributed module to accomplish this. In Drupal 7 this is much improved with nodes and users both being entities.
  • The counselor workflow: Gives counselors advanced search fields, and an interface to review and approve profiles. Queries on profile fields and a call to drupal_mail() make up most of this module. It was built just after our general family search, and writing this module to suit our counseling departments specific procedures proved to be a faster solution than working to integrate a contributed module.
  • And a general module for site customizations (like form alters and page callbacks).


The site was created in-house by the IAC marketing team: Sarah Bryson was project manager, Erin Grimm designed it, and Ryan Schwab (rschwab) developed it.

The Independent Adoption Center is US-based nonprofit, domestic infant adoption agency. We provide lifetime counseling to our birthparents, and adoption services without discrimination based on age, sexual orientation, marital status, religion, ethnic background, or race.