ResPublica is the UK's newest public policy think tank, founded in 2009 by Phillip Blond to explore new ground away from the political consensus of recent decades. Their approach is marked out by their emphasis on civic communitarianism, an alternative to the dominant political approaches of central regulation and monopoly markets. In a short space of time, their ideas have been catapulted into the limelight having found support amongst the opposition Conservative Party, widely expected to become the UK's next government. Their new Drupal-based website has been created to host their publications and provide a space for discussion and interaction on the subject of future public policy.

To support their activities and promote their research, they commissioned a Drupal-based website to facilitate:

  • Dissemination of articles and publications
  • Aggregation of media and press commentary
  • Multimedia, including video
  • Events and event management
  • Blogging, including regular and guest bloggers

The site was built by PRWD, using Drupal 6 and many contributed modules. As well as commonplace modules such as Views, CCK and Pathauto, some less familiar modules were used, including Search Lucene API to power the flexible search system. In addition to the contributed modules, the site was also built to take advantage of the flexibility of the core theming system, with a powerful theme that enhances and extends the modules used.

Design process

PRWD is a usability-focused company and followed strict usability guidelines in creating a design that is easy to navigate and explore. The site itself was designed using the interactive prototyping software Axure. This meant that a clickable, semi-interactive mockup of the website was present before any work started on the Drupal site build. As a result, there was plenty of time to get feedback, incorporate design changes and improvements, and plan the Drupal development. Due to the high fidelity of the prototype produced in Axure and the flexibility of the Drupal modules used, the functionality and design embodied in the prototype was implemented entirely and accurately, with little time wasted due to late changes or alterations.

Site Build

The site revolves around several key content types, created using CCK: Articles, Publications, Blog Posts, Press Releases, Media Comments, Videos, Projects, Events, People and Job Vacancies. Many of these are associated with a particular view (and several view displays) created using Views 2, with additional displays being created to allow for different sorting methods. Taxonomy vocabularies were created to allow for both categorisation and tagging of all content. This allowed us to place blocks in the sidebar promoting related content, and to create views that allow browsing of content by both category and type.


The Search Lucene API module was used to create a powerful and flexible search system. Content is indexed by Lucene on each cron run (every 10 minutes) and content is searched via a view which has the search terms as an exposed filter. With some hook_form_alter() magic and some theming, this was turned into a general search system for the site. Via a custom module, a block was added to the right-hand side of the page allowing the user to filter the search by content type, listing the number of matches in the search for each content type. A similar block was also created for the taxonomy/term view.


For such a content-driven site, it's important to be able to present various different media formats effectively. And for a media-focused organisation, this often means video – TV interviews and appearances, speeches, lectures and conference events. Many of these videos are made available via third-party media organisations which do not allow their content to be embedded on third-party websites, so we created a flexible video content type using CCK. This is built around a 'Link' field, allowing the editors to simply paste in the link to the video as it appears on the third-party site, along with a title and an optional 'Description' field which may include a transcript. For most videos, e.g. those hosted by BBC News, a link to the section on the media organisation's site where the video can be viewed is provided. But, using the following code snippet, enhanced support is provided for YouTube videos:

if (!$teaser && strpos($video['url'], '') === 0):
$values = array();
parse_str($video['query'], $values);
$v = $values['v'];
$yt_url = "{$v}&hl=en&fs=1";

<object class="video-embed" width="560" height="340">
  <param name="movie" value="<?php echo $yt_url ?>"></param>
  <param name="allowFullScreen" value="true"></param>
  <param name="allowscriptaccess" value="always"></param>
  <embed src="<?php echo $yt_url ?>" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed>
<div class="video-link">Click the following link to view the video: <?php echo l($video['display_title'], $video['display_url']); ?></div>     

This snippet, included in the Video node template, is capable of extracting the YouTube video ID from a YouTube URL and automatically creates the necessary HTML to embed the video in place.

Twitter integration

Twitter has taken the UK political and blogging scene by storm, and no serious social media strategy would be complete without serious Twitter integration. Through the Twitter module, an option is made available for site contributors to tweet via the official ResPublica Twitter account whenever new content is added to the site. In addition, tweets are aggregated on the site for inclusion in informational blocks, and we expect to extend the Twitter integration further in the future.

Google Analytics

Because of our usability and user research background, proper use of Google Analytics was very important to us (we even run regular training courses in getting the most out of Google Analytics). Fortunately, the excellent Google Analytics module didn't disappoint. It's not the most exciting module on any Drupal site, being mostly invisible to the users, but it does exactly what we need it to do. Tracking of outbound links, downloads and site search worked perfectly out of the box.

Admin Module

As a usability-focused company, one of our biggest problems with deploying Drupal in the past has been around usability. Getting the front-end right is the designer's responsibility, but the back-end admin area is often beyond the designer's reach. From past experience, we've found that users often find the Drupal admin area confusing. Fortunately, the Drupal 7 UX project has yielded some important feedback, some of which has been incorporated into the Admin Module which comes packaged with a fantastic admin theme (called 'Slate'). This theme, whilst not 100% perfect, is a huge leap forward for Drupal usability and easily puts Drupal on a par with WordPress and other easy-to-use CMSs.

Other Modules

Honourable mentions must go to several other very useful modules, including ImageCache and ImageAPI, Gravatar Integration, Read More Tweak, Draft, IMCE, XML Sitemap, Devel and Date API.


Drupal enabled us to build and deploy the whole site extremely quickly and cost-effectively, especially compared to other similar projects we've undertaken using less feature-rich PHP frameworks. With the Admin Module making the site much more usable for the contributors, there's no contest as to whether Drupal was the best choice for this site. As the UK political scene continues to wake up to open source solutions, we expect there to be plenty more Drupal sites in this sector in the next year.


tolland76’s picture


Did you do anything to aid integration between Axure and Drupal, or just use Axure for the wireframing phase then re-do the designs in drupal pages/templates/code?



Rob Knight’s picture

Hi Tom,

No, we didn't use anything to aid the integration. The designs were done in Axure with Drupal implementation in mind, so it was quite easy to translate the wireframes into templates.

- Rob

pgrasso’s picture

Is ResPublica still using Drupal?

willhowlett’s picture

Doesn't look like it. Whatever it's using is running on IIS / .net