Structured content management with Perch
One of the core concepts contained in the development of Perch was the desire to create <em>structured content</em>. At edgeofmyseat.com we had been building large-scale, custom systems with structured content at their core for several years. With Perch we wanted to bring that idea into a smaller scale, easily deployed CMS. We don’t believe that small sites should care about their content any less than a large site.
h2. What do we mean by structured content?
Take an event as an example. An event has several bits of information:
- the date and time
- location - including a map
- a description
- contact information for the organiser
You could allow your client to manage this information by giving them a text area with a WYSIWYG editor and reminding them to add all of the correct information. If you wanted it to be marked up correctly in order that your CSS could style it effectively, you would need to train the client to do that. Most of the time they would probably forget something and the design would quickly become less consistent.
In Perch you would create a “simple template”:/support/tutorial/creating-perch-templates (using HTML and Perch tags) and this would be transformed into a form in the admin. The client then simply needs to complete the different fields - adding a date, location, description, name, phone and email address of the organiser. As a designer you stay in control of the markup that wraps these fields and so can maintain the consistency of the site. The editor doesn’t need to worry about breaking anything or making a mess of the site. They just fill in the details.
h2. Structured content is about more than design consistency
As both Karen McGrane in her talk “Adapting Ourselves to Adapting Web Content”:http://www.lukew.com/ff/entry.asp?1434 and Sara Wachter-Boettcher in her article “Future Ready Content”:http://www.alistapart.com/articles/future-ready-content/ on A List Apart have discussed, making content more granular, splitting it into chunks and deciding what goes into those chunks frees it properly from being tied to that page, or even that site design.
Perch is a CMS for smaller sites by design, and not an enterprise level behemoth, however even in a small site you may want to reuse content around the site. For example you might want to display the next event from a list of events on the homepage - using different markup around the data. That kind of thing is made possible in Perch when you use structured content.
You can also output that content in different formats - such as generating an RSS feed, or JSON using Perch. With no markup mixed up in your content you are free to reuse it in other ways without needing to first try and clean it up.
You can also give your editors much more help within the CMS when using structured content. In Perch we have the “help tag”:/blog/archive/tip-adding-customised-help-to-your-edit-forms and “attribute”:/blog/archive/tip-adding-help-text-to-your-admin-form-fields-the-help-attribute that will enable you to give guidance as to what should go into a field - you could even give tips on the tone of that content, something that is very useful if the editor is not a trained copywriter.
If you have a Responsive Design, then structured content will make your life much easier. Keeping control of the markup and not needing to worry what might have been entered via an onsite editor is vital when you are making decisions as to how content responds as the viewport becomes wider or narrower.
When you come to redesign the site, your use of structured content will mean that markup is not mixed up with content. This will leave you free to redesign how the content looks without having to recreate all of your content - or live with the fact that the content is full of markup and classes that refer back to an older design.
With Perch we aim to make the use of structured content possible for every site, in a way that was easy to manage for both the site developer and the content editor. We’d love to hear how you are using and reusing your content in the comments.