For larger projects with complex content requirements, we use a deliverable called a content model to help us sort out the complexity.
Content models can be time-consuming and complicated, I won’t lie. In taking the effort, though, we tackle big questions head-on with our clients: who’s going to use this content? How is it created? Who will maintain it? The content model is one way we avoid the all-too-familiar "11th hour content sh*tstorm".
Let’s walk through how we create content models at Blenderbox, using a recent example from our re-design of AAAS Science NetLinks.
What is a content model?
A content model is a way of “atomizing” a client’s content into content types and fields. It might help to think of a content type as a “template”—press releases, event listings, blog posts… all are common examples of content types.
Fields are the parts of each of these content types. For example, an event listing has fields like Start Date, End Date, Event Name, and so on. It may help to think of fields from the standpoint of CMS design—what data do I need to collect in order to create this kind of content?
What’s it look like?
A big spreadsheet! No, really. There are probably prettier examples out there with boxes, arrows, and maybe even color, but in my experience that kind of abstraction actually makes the content model harder for the client to understand and less useful for our developers. So I’ve stuck with the trusty spreadsheet.
How is it structured?
Our content models follow a few simple rules:
- Each content type gets its own worksheet (see the tabs at the bottom of the spreadsheet).
- On larger projects, there’s often a common set of metadata that applies to every content type. In these cases, we’ll make sure the first sheet in the workbook contains that metadata, with an explanation that it applies to every content type.
- Each field gets its own row.
- Columns in the content model explain how we expect each field to behave. We also provide sample content for each field to make it tangible for clients. These columns can be customized to fit your needs, but here are the ones I think are absolutely essential:
- Field Name—you can’t talk about it if it doesn’t have a name.
- Data Type—what kind of data are we expecting for this field? Plain text, rich text, select one, select multiple, and date are common options for us. Maybe it’s easier to think of this column in terms of which HTML element you’ll use in the CMS for this field: dropdown menu, checkboxes, text input field, textarea, TinyMCE, etc.
- Bound Values—if there are multiple options to choose from, list those options here. This is a detail to get right early, as the options you decide on in the content model may be used by the UI for faceted search, tagging, etc.
- Example—this is what clients will focus on, sample data that helps them understand how you’ve broken down the content type
What’s the value of a content model?
There are lots of reasons to invest the time and effort to create a content model. In my experience, content models:
- Get everyone on the same page by establishing a common language about content types
- Help designers address complex content sites head-on, instead of relying just on wireframes and visual designs to communicate the structural details of each content type
- Trigger conversations about content creation and maintenance responsibilities. This might be the most valuable reason to do a content model. We talked about each content type in detail with the Science NetLinks team, to understand how it would be created and who was responsible for maintaining it. In these conversations, we learned about peer review processes for their content that we were able to bake into the CMS. By acknowledging that there were some areas where our eyes were bigger than our stomachs, so to speak, we were able to remove content types and avoid a last-minute content creation crunch.
- Help developers begin planning the database and content management system
I hope this peek inside Blenderbox’s content strategy process is useful — comments or questions welcome!