IPC Media
IPC Ignite have a legacy 'split-architecture' infrastructure with site delivery being handled by a bespoke front-end application communicating directly with the database. Editorial content management is handled by a separate back-end application responsible for writing to that database. The scope of this project was to replace the back-end application whilst leaving the database structure and site delivery as intact as possible. It was decided to leverage Drupal as a solution here to minimise the amount of bespoke coding required and lighten maintenance requirements.
Drupal integration and architecture, Drupal module development
Drupal was used very much as a content management development framework here in order to achieve compatibility with a legacy data architecture. As a result of these constraints, some of Drupal's time-saving features weren't used and there were more custom modules than would normally be required in a full Drupal solution.
Architecture
As this had to replace a number of content management systems across the division and be capable of being extended to new sites, a multi-site install was used.
As the existing sites were sectioned by content type, we were able to achieve a phased delivery by site section. In order for data to be available to Drupal's node system we created an import module which essentially performed a data migration into Drupal, converting category tables and relationships between items into Drupal's taxonomy system. We then wrote custom modules which reflected any changes back into the legacy front-end tables. Drupal's excellent hook-based architecture made this reasonably simple and allowed our modules to be reasonably lightweight.
A bridging table was used to link Drupal content ids with the legacy ids (used to retrieve content on the site). We also introduced a new GUID field for use in any new delivery development (e.g. RSS feeds require a globally unique id for each story).
This bridging table also allowed us to relate data using the legacy schema to Drupal-native data. For example, editorial can now easily administer and assign categories to content using Drupal's fully featured taxonomy system. We created some classes that allowed the front end to take advantage of these and use them for site delivery. Further, this also allowed us to add contributed Drupal modules and have them interact with non-Drupal data.
Images
The sites had a requirement for custom framing of individual image crop sizes for an image. We created a new module which complemented the existing Image module and allowed for custom in-browser cropping to various preset image sizes. This then copied the resulting images to a separate filesystem.
In-browser crop tool for each image size
Each image size can focus on different areas of an image
The sites have huge collections of images and we wanted to improve the process of selecting an image to associate with a story. We wrote a custom module which allowed selecting and attaching images by clicking on thumbnails returned from searches.
Custom Drupal module - Image selector
Galleries
The sites had very specific gallery requirements which weren't met by existing Drupal modules at the time. We wrote a custom module which allowed creation and ordering of galleries via drag and drop and image search.
Custom Drupal module - Gallery creator
This also allowed captioning of an image within its gallery context.
Custom Drupal module - Captioning tool
Voting
The site front end had a requirement for unregistered users to be able to rate items of content and display lists of the most popular items. We created a lightweight extension wrapper which enabled the Voting API module to be accessible via the Services module. We then created a class for the site to be able to register votes with the Drupal back end via XML-RPC. Performance was the driving concern here as previous attempts at registering and calculating user votes had proven to be a major performance bottleneck under typical site loads. Drupal's Voting API module addresses this very well with separate tables for casting votes and reading results and many tweakable performance parameters. The performance for this has turned out to be excellent and is able to degrade gracefully, having no impact on page loads when the servers are under pressure.
This currently drives the NME, Nuts and Whats On TV websites.
Adub is an Acquia partner, providing end-to-end site development services and consulting in:
- Strategy and planning
- Module selection and development
- Scalability and performance tuning
- Migration and upgrades
Contact Us
Blog
- Building a new Drupal team at Capgemini to work on some exciting projects. Get in touch if you know someone who should be part of that.
- Join us in London at Drupal Focus On Publishers - http://dfpublishers2010.eventbrite.com #dfpublishers2010
- At Brighton #develop conference. Looking at what drupal can bring to games.
- We now have a Drupal Enterprise group on LinkedIn - http://www.linkedin.com/groups?about=&gid=319970
- Attending Drupal for Social Media in London. ROI as the elephant in the room #BtSW
- Added a new presentation to slideshare - Drupal and Web Services - http://www.slideshare.net/Adub/drupal-and-web-services-4557521
- http://bit.ly/bji24d - Talking about Drupal Web Services and enterprise applications at Sun on Wednesday 26th May
- Thanks to everybody who worked so hard to pull it together in two days and Google for hosting #drupalvolcon
- I'm attending DrupalVolCon UK 2010 -- http://drupalvolcon.eventbrite.com #drupalvolcon
- @Dries Blog post: Look.co.uk switches to Drupal; traffic doubles within months http://bit.ly/bsjBfV
