Tips for Creating Drupal Content Types for Library Web Sites

One of the most difficult things about migrating a library web site from a static or non-CMS site into Drupal is getting your head around custom content types. Drupal comes with two content types out-of-the-box-"article" and "basic page"-but the possibilities for creating custom web site content are limitless. Because it's so easy to create custom content types, it's easy to overthink and end up with too many.
 
As with any web project, approach content type creation from a user-focused perspective, both in terms of internal users-library staff who will be creating content-and external users-your students, your campus community, etc. Who will be adding content, for whom are they creating the content, and what will that content look like? Applying the org chart to the website and creating content types by department-unless it's an intranet-will very likely will NOT be a good working model for a public-facing web site.
 
Start by looking at your existing site and taking an inventory of what you have and what you intend to migrate. Which content is, or should be, dynamic on your existing site? Those things will likely be good candidates for being their own content types, where more static information can simply use the default "page" content type. Also, remember that you will assign roles and permissions to your content creators based on content types, so think about who will need access to add content. In terms of permissions and site security, a good rule of thumb is to follow the principle of least privilege: give everyone access to exactly to what they need to do their jobs, and no more. This is especially the case if you plan to allow students (or other non-library folks) to create content.
 
Here are some of the content types from the academic library web site that I managed until my recent job switch:

  • Blogs: there were three blogs, each with its own content type and different sets of authors 
  • Database: each vendor-subscribed database is a "piece" of content; taxonomy is used to sort them into lists
  • Emergency notice: the power is out, library/campus closed due to snow, etc.
  • New books list: imported a list from III catalog 
  • Database trials: log in information and links to trial resources

In terms of authors and permissions, the "Blog" content type for the main library news blog was accessible to about a quarter of the library's staff representative of almost all departments; anyone who had a notice about an event or wanted to advertise anything was allowed to post about it (after an hour of training about how to post and how to write effectively for the web). The "Emergency notice" content type was accessible to key people who were the ones to make the decision about a closing (i.e., the director or an assistant director) or in the communication chain for reporting out any emergency information. The "new books list" and the "database trials" were only accessible internally to the one person whose job it was to collect and present this information. Finally, the "database" content type was intended primarily for the librarian whose job it was to manage public access to the databases to the web site. Each of these things were custom content types created with CCK.
 
Generally speaking, the fewer content types, the better. Create them very precisely for your users' (both external and interal) and site's needs. Finally, I also highly recommend the article "Improving the Drupal User Experience," written by Rachel Vacek and her web staff at the University of Houston Libraries. There are some excellent "lessons learned" in it.