In August 2010, Appnovation Technologies was chosen by Rainforest Alliance to re-create their website using Drupal, while keeping all existing content. Appnovation was chosen to develop the new site due to their successful development experience with other large NGOs like the World Wildlife Fund.

The Rainforest Alliance works to conserve biodiversity and ensure sustainable livelihoods by transforming land-use practices, business practices and consumer behavior. Based in New York City, with offices throughout the United States and worldwide, the Rainforest Alliance works with people whose livelihoods depend on the land, helping them transform the way they grow food, harvest wood and host travelers. From large multinational corporations to small, community-based cooperatives, we involve businesses and consumers worldwide in our efforts to bring responsibly produced goods and services to a global marketplace where the demand for sustainability is growing steadily.

Goals and Challenges

The Rainforest Alliance website was running on both a ColdFusion-based setup and static ColdFusion pages on two MSSQL 2005 databases. They found the backend of this system to not be as user friendly as they wanted it to be and that content management was not as efficient or as simple as they liked. They made the decision to go with Drupal as it would unify their site management under one content management system, making the site and content easier to update.

The client was satisfied with the way their site functioned on the front end so the main challenge for Appnovation was to re-create the existing site in Drupal while maintaining all the same functionality and migrating over 10,000 files of existing content (see “Content Migration from a Mysql Database to Drupal Using Batch Operations” in the Appnovation blog for more information). The entire process was lengthy as Appnovation’s developers needed to understand completely how the original site worked and find a way to translate that into the Drupal equivalent.

The most complex part of the site that needed to be mimicked was the multilingual functionality. The Rainforest site features Spanish, Japanese, German and French. It uses a non-conventional setup for with variable sections ie a section menu can appear in German, but not Japanese. Appnovation needed to provide a flexible way to switch between different languages at any time on any page while providing the client with the ability to create additional translated menu items and pages at any time. To achieve this the developers used a two step process:

  1. Using the Internationalization module to power all the translations for menu items and nodes, making the Language Drop-down module able to switch languages. The Context module then made it possible to dynamically place the correct menu onto the page with the chosen language.
  2. To ensure that multilingual works properly, every page MUST be a node. This means that “callback” cannot be used. Instead, the developers simulated page callbacks by sitting a custom page on top of a placeholder node.

The desired result was achieved through a large combination of contributed and custom modules.

Site Functionality

As mentioned, the new site mimics the old but with added features such as the Multimedia and Publications database extending the original functionality.
Features including:

  • Customizable slideshows on homepage and within varies sections
  • Twitter feeds integration
  • RSS feeds integration
  • Multilingual support on menus and contents for French, Spanish, German, and Japanese
  • Dynamic placement of content widgets (Highlight Boxes) for both Single and Tabbed version
  • Searchable listing of all multimedia contents – Interactive contents (Flash), Videos (Vimeo and Youtube), and Images slideshows
  • Searchable listing of all publications including newsletters and PDFs

Modules Used

There were a total of 90 modules used for the site, including 27 custom modules.

Contributed Modules

There were 63 contributed modules used for the project. The most notable are:

  • Context (6.x-3.0) - The site has been divided into sections. Each section has its own sub-navigation menu. Context was used to display menu blocks in each section.
  • Features (6.x-1.0) - Used for exporting site roles and permission settings. It is also used to export “sections” created using Context.
  • Internationalization (6.x-1.7) - This package provides a tool in which nodes, menus blocks and code strings can be translated into different languages
  • Feeds (6.x-1.0-beta 10) - Used to consume blog feeds from a WordPress powered blog site and converts them to nodes
  • Apache Solr Framework (6.x-1.2) & Apache Solr Search (6.x-1.2) - used to power the Publications , Multimedia and Site search pages

Custom Modules

While the contributed and core modules provided a majority of the functionality for the site, custom modules are used to tie together the contributed modules and for overriding default functionality.

  • RFA Apache Solr: extending the Apache Solr functionality and provide site search
    The site search is powered by Apache Solr. Any customization done, such as overriding the search results theme is done in this module.
  • RFA Custom Blocks: provide a set of blocks tailored to the content
    Custom blocks that do not fall within other custom modules scope are declared here. An example of a custom block is the Forestry block on login page
  • RFA Custom Pages: provide a set of custom pages
    Custom pages do not fall within other custom modules scope are declared here. An example of a custom page would be about/careers
  • RFA Data Migrator: used to govern the migration process and formatting of data
    Contents from the old site where stored in a MSSQL database. The process of retrieving the those contents and converting them into Drupal nodes is this modules main responsibility.
  • RFA Featured Highlights: provide a Highlight Box node and block to be placed on varies pages
    This module is responsible for handling highlight boxes that appear on a lot of pages such as the ones that you see on the English home page. The contents of those highlight boxes can be edit without code modification since the the highlight boxes are implemented as content types.
  • RFA Featured Slideshows: provide a Slideshow on homepage and varies section
    This module is responsible for displaying slideshow on the home page and other sections of the site. Modifying slideshow contents are done using Drupal UI as these slideshows are actually content type
  • RFA Multimedia: provide the backbone and UI of the Multimedia database
  • The multimedia search page (/multimedia) is powered by Apache Solr, Views and CCK. Any functionality that the multimedia page provides is handled in this module

  • RFA Path Redirect: repurposed version of the Path Redirect module to handle site redirections
  • RFA Publication: provide the backbone and UI of the Publication database
    The multimedia search page (/publication) is powered by Apache Solr, Views and CCK. Any functionality that the publication page provides is handled in this module.
  • RFA Storybook: generate a storybook layout
    All functionality that the kids/stories page provides is managed in this module. The storybook functionality is powered by CCK and Views. The page uses Views to display each storybook node.
  • RFA Tabbed Content: provide blocks of tabbed panels for contents to be placed varies pages
    This module is responsible for providing tabbed panel feature on the site. An example of this tabbed panel can be found on curriculum/second/lesson1 page. This tabbed panel is implemented as a content type. This ensures that tabs can be dynamically added and modified without code changes.
  • RFA Users: extends the core Users module and provide functionality to SmartWood logins
    Provides extended user functionality.
  • RFA Business Login Blocks Feature: generated by Features; sets block into right place
    This module is generated by Features. This is a settings module which displays blocks on login page. Settings in Drupal are modified using update scripts to ensure that databases among developers that worked on this site remain consistent. But instead of using a script, we decided to use Features to export block placement configurations. The Context module is used for displaying blocks on specified pages
  • RFA Homepage Blocks ES Feature: generated by Features; sets homepage blocks position (Spanish)
    This module is generated by Features. This is a settings module which displays blocks on the Spanish home page. Settings in Drupal are modified using update scripts to ensure that databases among developers that worked on this site remain consistent. But instead of using a script, we decided to use Features to export block placement configurations. The Context module is used for displaying blocks on specified pages
  • RFA Homepage Blocks Feature: generated by Features; sets homepage blocks position
    This module is generated by Features. This is a settings module which displays blocks on the English home page. Settings in Drupal are modified using update scripts to ensure that databases among developers that worked on this site remain consistent. But instead of using a script, we decided to use Features to export block placement configurations. The Context module is used for displaying blocks on specified pages.
  • RFA Menu Context Feature: generated by Features; sets menu into correct placements
    This module is generated by Features. This is a settings module which displays menu blocks on pages. Settings in Drupal are modified using update scripts to ensure that databases among developers that worked on this site remain consistent. But instead of using a script, we decided to use Features to export block placement configurations. The Context module is used for displaying blocks on specified pages
  • RFA Users Feature: generated by Features; sets user role permissions
    This module is generated by Features. This is a settings module which deals with user roles and permissions. Settings in Drupal are modified using update scripts to ensure that databases among developers that worked on this site remain consistent. But instead of using a script, we decided to use Features to export user roles and permissions
  • RFA Rightside Block Feature: generated by Features; sets block into correct place
    This module is generated by Features. This is a settings module for displaying right side blocks. Settings in Drupal are modified using update scripts to ensure that databases among developers that worked on this site remain consistent. But instead of using a script, we decided to use Features to export user roles and permissions. The Context module is used for displaying blocks on specified pages.
  • Custom Technologies

    About 60% of the site is based on specialized technologies to provide the requested functionality as well as look and feel:

    • Migration process was driven by a custom designed engine that governs the data transport from MSSQL to MySQL. Converts ColdFusion pages into Drupal nodes, parses content to fit the new format, and associates pages with their translation correspondence.
    • Slideshows are powered by third-party jQuery scripts with additional customizations done during development
    • All pages are built using nodes even for custom pages, where it is traditionally built using callback functions, are based on node constructs – callback functions are mimicked.
    • Apache Solr is used for all search related operations.
    • Contents of PDF files are made searchable as a result of PDF scan done during file upload.
    • UI functionality mostly given by jQuery UI for Modal Popup and Tabs
    • ChartBeat used to monitor real-time site traffic

    Project Team

    The Rainforest Alliance project was completed by a team of six people:

    • Two designers/themers
      One senior designer that consulted on client design and an intermediate that concentrated on theming
    • Three Drupal developers
      One lead developer overseeing and architecting the project layout and two intermediates that carried out a majority of the tasks
    • One project manager

    Project Management

    Active Collab and Google Docs were used for the project management tasks on the project.

    Hosting Information

    Rainforest Alliance is hosted on a dedicated IP on Rackspace

    Server specifications:

    • PHP 5.2
    • Apache Server
    • MySQL database 5.1.4.1