Plone Taxonomy, Revisited

With Plone 3 on the horizon, our thoughts here at ONE/Northwest are once again turning towards taxonomizing content in a Plone site. I looked back at Jonah Bossewich’s post “Death and Taxonomies,” in which he discusses Drupal’s taxonomy module, and found that much of it still rings true. To briefly resummarize, Plone needs a system that allows site managers (not just programmers!) to:

  • Quickly build and manage simple flat or hierarchical vocabularies through the Plone UI.
  • Associate those vocabularies with existing content types.
  • Tag content objects with terms from the vocabulary
  • Use the vocabulary hierarchy as part of the site navigation

Jonah shows how Drupal implements these ideas, with screenshots. We’re talking about something more powerful than Plone’s “Keywords” but less formal than the full-on ontology management provided by PloneOntology. It’s a sweet spot that provides a lot of power, yet can be managed by non-programmer site administrators. As Joel Burton might say, that’s “humane.”

I won’t repeat Jonah’s explication of Drupal, but will build on it with some thoughts about how Plone could implement simple taxonomy management in a smart, modern way.

Andrew Burkhalter and I batted this around, and we decided that the elements of an “ideal” Plone Taxonomy solution would be:

  • Vocabularies and vocabulary terms as Archetypes items, which lets us leverage all of the goodness of Archetypes to let users create and manage vocabularies. This also makes it easy to include the taxonomies in the navigation, since they’re already Archetypes objects. (ATVocabularyManager and PortalTaxonomy both do this.)
  • Some nice javascript-powered widgets for choosing terms from a hierarchical vocabulary. (PortalTaxonomy has one, it could possibly stand to be updated to use KSS.)
  • A way to associate vocabularies with existing content types. This should be done in the Plone UI, and should not require subclassing base content types. We believe that using Zope 3 adapters will allow this. We strongly believe that vocabulary management is a site administrator job, not a Plone programmer job.
  • Vocabulary items must have unique IDs for cataloging purposes, but also must be addressable via friendly names in SmartFolders. There will probably need to be some methods build to support this.
  • Some nice custom views for the various vocabulary objects, which allow you to display a bit of HTML followed by a listing of the items tagged with the vocabulary word. RichTopic is a nice model here. This is pretty straightforward.

(If you’re interested in this topic, you may also want to see my recent musings about Plone Keywords, which is somewhat related.)

If Architects Were Web Designers

Shae Allen offers a sharp, funny riff on the thrill of difficult web design clients.

Dear Mr. Architect:

Please design and build me a house. I am not quite sure of what I need, so you should use your discretion. My house should have somewhere between two and forty-five bedrooms. Just make sure the plans are such that the bedrooms can be easily added or deleted. When you bring the blueprints to me, I will make the final decision of what I want. Also, bring me the cost breakdown for each configuration so that I can arbitrarily pick one.