BackgroundOnly local images are allowed.

Books for Keeps is the UK's leading, independent children's book magazine. It was launched in 1980 and ever since has been reviewing hundreds of new children's books each year and publishing articles on every aspect of writing for children. There are over 12,500 children's book reviews and more than 2,000 articles including interviews with the top children's authors and illustrators. 

The Project

Only local images are allowed.

The Brief

The existing Books for Keeps website was based on an older version of Drupal (4.7) and had a very dated design. Reviews and articles were hard to find, which was a big problem as most of their existing community consisted of school teachers and librarians who use the site for researching which books they should be buying for their classes and stocking in their libraries.

The Challenges

Along with a new design and upgrade to Drupal 6, there were also issues with how existing data had been stored. For the last thirty years, every time they reviewed a book they recorded information such as authors, contributors, publisher, etc. and have amassed more precise information than is available from the largest online book reseller Amazon. It was essential that this data was made use of, however in the current version of the website it had been stored in only two fields - 'Supplemental 1' and 'Supplemental 2', and it was our role to convert this into a format the computer could understand and provide useful functionality, such as being able to see which books an author or contributor had been involved in.

The Transition from Print to Online

Finally, after thirty years in print, Books for Keeps produced their last ever print version in early 2010, so it was also our role as experts in digital media to ensure they had all the tools and functionality needed to keep Books for Keeps going as an online-only production. This is an ongoing effort as both themselves and their existing readership migrate from print to online-only, of which a major part is the change management process from one of static pages delivered once every two months to a virtual environment where the boundaries are less rigid and content can be updated at any time.

The Outcome

There are three phases to this project:Only local images are allowed.
  • Designing and implementing a new architecture for the data
  • Creating a new, easier-to-use design
  • Ongoing development to assist the migration from a bimonthly print publication to a more regularly updated online publication

Architecture

The first phase, which was essential to get right as it provides a solid base for the long-term growth of the site, took the most time as we had to convert text such as 'Written by Sheila and Andrew Allan and edited by Gary Bond' to a data set of authors and contributors. In this instance, the authors would be Sheila Allan and Andrew Allan with the editor being Gary Bond. This example was one of the simpler ones - there were many spelling mistakes, missing spaces between names and the word 'and', and a whole host of other issues which eventually we managed to sort out, resulting in the current website having:

  • Over 70 roles, everything from author to paper engineer
  • Over 6,500 Authors & contributors, each of which has a user account and a profile listing books they've been involved with
  • Over 80,000 unique SEO-optimised URLs, making it one of the top 'hub' websites for children's books
  • 30,000 hits per month; 500-1000 unique visitors per day, a massive jump from around 12,000 print subscribers

Design

Each issue of the magazine has around 70 reviews along with a number of articles. We were keen to display a complete issue in one screen, so as the only thing we know about our site visitors is they are most likely to know the age of the children they're looking for a book for, we decided to use Drupal Panels and split the reviews sections into tabs based on age ranges. This allows people to quickly get to the information they want without having to search.

The list of articles for each issue we kept much the same as the print version - on the inside cover there is a contents listing which we replicated on the left-hand side of each issue. We then listed news underneath the reviews as news is not tied to a specific issue. The latter half of issues also have an Editor's Choice and New Talent feature which we display at the top of the page.

Ongoing Development

As requirements are changing due to the move to online we decided to implement a new homepage which has an updated design which we hope to implement across the rest of the site as and when budget allows (they are a Lottery-funded project). There is now a new 'Book of the Week' feature, a new video interviews section, a new 'Featured Author' section, and regions for highlighting the latest news and reviews. Along with using the Drupal Front Page module for the new homepage, we also created a number of new content types and made use of the Drupal Nodequeue module which enables staff to easily manage the content shown on the front page through a drag-and-drop interface. 

Improved searching is also on the to-do list as we had originally implemented the Apache Solr Drupal module however a number of issues arose. The first was that Apache Solr was great, but out of all the data they have, the genre information for books is lacking, which really showed up when faceted search was in place. We hope to combat that with community-sourced tagging, i.e. enticing the community to help categorise books as they visit the site. The second problem with Solr was the increase in cost required for hosting as Solr is a separate piece of software and was making their current hosting (just a 'DV' Virtual Private Server from Media Temple) fall over due to the number of hits they receive.

We have Varnish Cache and Memcache running on the server in order to improve performance. The majority of the visitors to the site come as a result of google searches, so the more we can improve the responsiveness, the higher google will rank the site, and the more potential advertising revenue can be made from the content they have built up over the last 30 years.

There is also the scope for providing a wealth of community functionality on the site and engaging users more interactively, once the design and performance have been worked on then we hope to start building more of this! The children's book industry has no one central place where the community can come together, it is our belief that in time, the Books for Keeps website can fill this space.

The Specification

For the more technically minded, here's a list of most of the contributed modules we used to build the Books for Keeps website, along with a short description of why and how we used them. It's roughly in order of how they appear on the modules administration page:

Admin - provides a nice administration interfaces

Admin Role - allows a role to be set up to enable multiple administrators

Front Page - enables a custom front page different than the rest of the site

Amazon - we use this module to get images from Amazon and any data we don't store, such as current price

CCK - Content Construction Kit, which we use for creating our specific content types to hold the data we want

Content Multigroup - in order to store who was involved in what books and what their role was, we used this (now abandoned in favour of CCK3) module

Embedded Media Field - we use this for the Authors Live video section on the homepage

Filefield - used for uploading files, and is required by the ImageField module - we are using this for migrated data which already had images

Filefield Insert (now Insert) - makes it easy to insert uploaded images into text areas

FileField Sources - enables re-use of existing uploaded files

ImageField - enables uploading of images

Node Relationships - a handy module which helps when adding links to books when creating a review by providing buttons including 'Add and reference'

Referential Integrity for CCK - this helps maintain relationships, for example when you have linked data and you delete content, you can see if there are any orphaned nodes

Role Reference - we use this along with the CCK User Reference in order to store details of who contributed to what books, and what contribution they made

Memcache - one of the caching systems we use in order to provide visitors with a better experience

Chaos Tools - a helper API for modules including Panels

Content Profile - enables customisation of user profiles using CCK fields

Simplenews - we use this for creating newsletters

Simplenews Statistics - provides a wealth of information from newsletters, like the open-rate and CTR (click-through rate)

Simplenews Template - enables us to theme the newsletter

Nodewords - enables manual and automatic creation of meta tags for content

Nodequeue - we find this module easy for users to understand, so we create nodequeues for management of the front page content

Account menu - useful little module which provides enhanced login/logout/my account menu items

Advanced Forum - improves the core Drupal forums

Auto Assign Role - we use this so we can distinguish between those who register on the site and those who's profiles are from existing data

Automatic Nodetitles - some of our content types need to automatically generate titles from the data, this is the module which does it for us

Backup and Migrate - an essential Drupal module!

Better Formats - helps us improve the interface for administrators

Better Select - another little module which helps us improve the interface for administrators

DB Maintenance - helps optimize the database

Form Defaults - easy customising of forms

Global Redirect - removes the old node/1 URLs and uses just the SEO-friendly ones

Minimax pager - provides an easier-to-use pager when there's hundreds of pages

Multi-column checkboxes and radios - enables multiple columns for when there's lots of checkboxes or radio form elements

Page Title - easy customising of the page title which appears in the browser title bar

Pathauto - automatic creation of SEO-friendly URLs

Persistent Login - adds a 'Remember me' checkbox to the user login

Read more link - simple module which moves the 'Read more...' link adjacent to the end of the content rather in the links section

RealName - enables the use of various fields to display a user's real name instead of their login name

Safe HTML - filters input content before it reaches the database

String Overrides - easy customisation of text throughout the site

Vertical Tabs - now part of Drupal 7, this improves content submission/editing forms by grouping tasks into vertical tabs

Panels - panels make it easy to manage the display of content, and for this site, we have panels for issues, reviews, news, articles, and books

Tabs panel style - we are using tabs to display the book reviews in different age groups

Google Analytics - this enables us to hook into Google Analytics web stats service

External Links - highlights to the user which links are external to the current website

IMCE - image file uploader/browser

IMCE Wysiwyg bridge - links the image file uploader/browser to the WYSIWYG editor

TinyMCE Node Picker - provides a button for the TinyMCE WYSIWYG editor so you can easily find and link to existing content

WYSIWYG - enables a WYSIWYG editor in the text areas, we are using TinyMCE

Views - most Drupal sites use views, it enables us to list content in any which way we like

Fivestar - provides the rating functionality on the site

XML Sitemap - provides standards-compliant site maps for the search engines

Comments

madeinjapan’s picture

I like "Children's Book Reviews" on your site and learning for this solution for my drupal based website. http://booksforkeeps.co.uk/ site performance is very good. Thanks for sharing a module list.