The recent explosion of social networking sites has led to a rush to tap into new markets. A case in point at ISL (Insight + Strategy + Logic) is Red Room, an online community for writers of all stripes. The project is the brainchild of entrepreneur Ivory Madison. The goal of the site is to be the premier destination for authors to congregate with fans and discuss their books and ideas. Many high profile authors including Maya Angelou, Amy Tan, Khaled Hosseini and Salman Rushdie have been on the site since day one.

While the Web has plenty of sites on which you can buy books, there is a paucity of places geared toward building dialogue about the books beyond what is necessary to move product. On many book-related sites, the authors themselves have largely been left out of the picture, leaving them to either establish their own limited Web presence or do without. This is a shame when you consider what could be on a good author website — who better to blog than someone that makes a living spinning a good tale? Red Room offers every author the opportunity to easily build a presence to interact with their readers and with each other.

The client came at us with a list of features: blogging, comments and reviews, biographies, information about published works, event listings, streaming video, and podcasts. They required a robust, moderated, and extensible backend, with tagging and search tools to allow the user to navigate the large volume of content that thousands of writers would pump into the site. Most importantly, the site’s content generation tools needed to be easy to use by authors that wouldn’t necessarily have experience using technology.

Our Solution: Drupal

Given these requirements, it was clear that executing this project effectively would require a reliable CMS. We had built many custom CMSs over the past decade but began looking at Drupal with increasing interest when Drupal 5 was released. Being an open source shop already, we decided to take the plunge.

Key Features

As one would expect the main reason for using a CMS for this project was to allow us to sensibly handle large amounts of content. Drupal offered an intuitive admin backend —important so that the mostly non-technical Red Room team (and major authors!) could make large content updates. It also has modules that allow users to add content of their own. Where Drupal really stood out, though, was in its extensive community management and user registration tools. With a minimum of our own code, users could sign up for an account and be sorted into different roles (readers and authors, currently); blogs could be incorporated into author pages; all content could be moderated where needed.

Content Moderation

While anyone is welcome to become a regular member of the site (called a reader), Red Room only gives select writers the user status of author. Users of this class are able to create an author page, which contains a biography, information about published works, and the other features listed above. The client required that author profiles be complete and of high quality before being posted, to maintain the site’s professional image.

We were able to solve the problems posed by these requirements with the help of the modr8 module. The process we devised allows a user to become an author by filling out an application form, which is sent to a moderation queue. From there, an administrator can determine if the request is valid and the author notable. By employing moderation to handle this process, we gave administrators the ability to instantly upgrade a user account by merely approving the author request application. We did this by enhancing the moderation process to carry out additional tasks when a piece of content is approved, such as assigning a new role to a user.

One Page, Multiple Views

It also proved helpful that we were able to modify Drupal’s functionality to show custom views based on both user role and moderation status. To do this required overriding the functionality of the views module using a query substitution hook. We then took advantage of this ability in the section of the site where a new author creates an author page. Even before the profile on the page is approved by an administrator, the author can view all of his or her content exactly as it will appear to users.

The modr8 module also came into play here, though in a less orthodox fashion: via the assignment of an additional function to the submit element of the module’s administrative form. This then allowed the moderation of a single piece of content (the author profile) to trigger the author page to be populated with an entire set of related content (published works and the like).

All in all, Drupal offered a great starting point for community development; though Red Room proved to have some unique requirements we were fortunately able to fulfill them on our own.

Search Engine Optimization

Optimizing the site for search engines was a priority from the start. A vital part of this process is to assign meaningful URLs to pages. Because most of the site content would be user generated, we needed to assign these URLs automatically without requiring that the authors writing the content make any decisions themselves on the matter.

Drupal was able to do much of this thanks to the pathauto module. However, many areas of the site require that the URL include the author’s real name — administrators verify this when approving an application to become an author — to give Red Room high visibility in searches. Doing this required other modules. In particular, we needed to create a custom token for the field in the user’s profile that holds the name used by the authorship module. This in turn is translated into a “clean” value for use in a URL, and a custom view allows content to be selected according to this custom profile field. All in all, our solution incorporates the pathauto, profile, token, authorship and views modules.

Low-Maintenance Code (Best Practices for Customization)

When working with many open source frameworks, a problem that often turns up is the need to make project-specific customizations by altering the framework itself. In the long run this is counterproductive, as these hacks render it difficult or impossible to apply security updates or to upgrade the software to a newer version. Fortunately, Drupal has been extensible enough to allow us to follow best practices, developing customizations that depart from Drupal’s standard functionality — sometimes radically so — without making changes to the core or contributed modules.

Built for the Future

Red Room has plans to rapidly expand its functionality and its user base. As such, it was important for us to choose a CMS that would similarly scale, minimizing the need to switch systems in the foreseeable future. The fact that Drupal is open source is very important in this regard, as it ensures that the system will continue to be extensible and usable on any platform. Among OSS projects, we singled out Drupal due to its popularity and the exceptional network of developers using it. Because it is so widely used, the servers running Drupal constitute an unusually large test bed for the system. This gives us confidence in its abilities and the speed with which bugs or vulnerabilities will be found. In turn, the large number of developers assures us that flaws will be fixed in a timely manner. And the more people use and extend the software and share their additions with the community, the more opportunities Red Room will have to extend the site’s functionality with ease.


dewolfe001’s picture

Is there a glitch that's causing this new site post to end up repeated several times?

- Mike

ladylolauren’s picture

The multiple listings (mentioned above) was a user error on my part. The duplicate posts have been removed. Won't happen again...

droople’s picture

How did you create this page


joep.hendrix’s picture

Looks good!

CompuBase, Dutch Drupal full service agency

sepeck’s picture

Just a guess, but it could very well be a php query of the MySQL database with some formatting thrown in. The effect is similar to the handbooks page.

On a similar note, they don't seem to be using the CSS aggregation (or some modules aren't playing well with aggregation) so if you do a view source you can get a good idea of some of the modules they are using.

-Steven Peck
Test site, always start with a test site.
Drupal Best Practices Guide -|- Black Mountain

-Steven Peck
Test site, always start with a test site.
Drupal Best Practices Guide

bob.hinrichs’s picture

Hi There, thank you for your comments! CSS aggregation is turned on, so I'm wondering if there is a page or an experience that caused problems with the css aggregation that you found? BTW I am not concerned about hiding the modules we used, there are a lot of them we had to use, still growing in number as new features are added, and we are very pleased with most!


sepeck’s picture

I didn't see them on the front page. The only one I see as separate now is simplenews under view source and I would think that needs to remain separate. I misspoke a bit earlier. One of the pages showed 2-3 css for modules in addition to the aggregation.

-Steven Peck
Test site, always start with a test site.
Drupal Best Practices Guide -|- Black Mountain

-Steven Peck
Test site, always start with a test site.
Drupal Best Practices Guide

altparty’s picture

I'm interested too. Did you use the Views module?

Our Drupal Website:

socialtalker’s picture

in terms of quality content, it looks like it might reach that other superb drupal site

goodman12345’s picture

one of the best sites.

Super Druper’s picture

One of my favorite sites so far! great work.

Perhaps you can shed some light on how you get the 'author/' and 'member/' custom user profile paths?