My Obsession with Content Trees and Subcontent

By Deane Barker on February 15, 2009

I’m stuck in a CMS rut. It’s a good rut, but a rut nonetheless.

I’ve written here in the past about a couple of content management patterns which I believe in very strongly: Content trees and subcontent. I often celebrate these two patterns as the “correct” way to model content. Problem is, I’m almost to the point where I’m non-functional without them.

Take Joomla for example. My church uses that system, and I tried to sit down and learn it so I could contribute. Despite lots of very helpful advice from Amy Stephen, I just couldn’t wrap my head around it. I just didn’t...get it, and I quit the platform just as confused as when I started.

Drupal was no better. I have a personal project percolating right now, developed with Drupal, helped along by Adam Kalsey. But I still don’t like it much. I know, I know – you can use taxonomy to impersonate a content tree. But I still can’t have subcontent. And without that, I’m sort of...lost.

This is a personal failing, to be sure, but it’s still a huge roadblock to me. After all these years, the content management part brain just works that way now. I need to break out of this pattern, I think. Not for functionality’s sake so much – I still believe the tree/subcontent model is the correct model – but because I probably let a bunch of really nice systems slip by because I can’t see past it.

eZ publish implements it. WordPress implements it (for its pages functionality). CMS Made Simple implements it (I voted for them in the Packt awards last year). So does Etomite (a nice system, worth checking out), and my newest obsession, Episerver (with which, Blend is planning to take over the world). Ektron implements about half of it, which has always annoyed me (they fell into “the folder trap” which I discuss in the subcontent post).

Now, before you flame me about how awesome Joomla or Drupal is, save it. I know they’re good systems, and that’s what I find so frustrating. A lot of other people are doing really nice things with them – why can I just not wrap my mind around them? Why can’t I see past this one thing? As Gunney Hartman so eloquently put it (audio, beware), what is my major malfunction?

I don’t know. It’s frustrating.

Comments (7)

Brade says:

I won’t flame you for your opinions of Drupal and Joomla, but I will call you a retard for posting an uber-loud audio link there at the end. Unwritten rules, man, unwritten rules....

The only thing I can say is that the ideal CMS has yet to be created. I’m using Drupal right now at work – -in many ways it’s great, but it is quite limiting when you want to base your display logic on parent-child relationships. Specifically within the Views module, it would be handy to create such rules with your defined taxonomies.

However, I once tried to use eZpublish, as I had seen you pimping it quite heavily, and pretty much disliked it from the get-go, much as I disliked Joomla. Like you, I’m willing to admit that I simply didn’t give it a fair shake or I got hung up on some idiosyncrasy, but the end result is that I had no fun. And therein lies the problem – -no CMS has yet been “fun to use,” in my opinion. But I believe it can be done. At my previous employer, we made nice strides with an AJAX-centric CMS called BlueInk, but we simply ran into a time barrier before we could implement good content-type-creation features. Still, I latched onto the idea that my ideal CMS would allow me to edit/add/delete content IN PLACE with various AJAX-enabled overlaid forms. I still feel that way.

But CMSes are just one type of software that has yet to be perfected. Project management (that includes billing management and time tracking) and personal finance management are two more that still aren’t quite right. Mint comes close on the latter, but without the critical ability to enter your own transactions right away, it becomes far more of a passive app than it should be.

Anyway, good thoughts, Deane. Hopefully all this brainstorming will lead to someone creating the miracle app we’re all looking for – -I think it’s within the realm of possibility.

Adam Kalsey says:

You can do subcontent in Drupal through the Node Reference module. Node Reference allows you to attach other nodes to the current node.

Petr Palas says:

Kentico CMS for ASP.NET supports both content tree and subcontent. It allows you to organize content as you wish in a content tree. For example, you can place a car specification in the content tree and list of add-ons under the car document.

Graham Tillotson says:

I agree with Deane in that I’m a purist when it comes to the content tree – in terms of the modeling – but I often have issues later on at the database layer. eZ Publish uses the classic pair of tables for storage, ezcontentclass/ezcontentclassattribute and ezcontentobject/ezcontentobjectattribute, and this schema structure a) can require a whole lot of performance tuning and b) is tough to unravel if you want to do any analytics work. My old company did something similar with v2 of their product when the put XML DTDs in one table, instances in another, then attempted to publish either through a cache mechanism or dynamic generation.

eZ Publish uses something of an expanded adjacency model, which means you can figure out where objects live in the tree with the help of metadata stored with the objects, but it still takes a whole lot of work and custom functions in an ETL tool. Maybe these sorts of things more important when high traffic is involved. At any rate, a lot of good CMSs to go look at. Thanks Deane.

Doug - Velocity, B2B Marketing Agency says:

You’re right: Episerver rocks.

Kevin Shoesmith says:

Both ExpressionEngine and Drupal allow for what you’re calling subcontent.

In ExpressionEngine, a custom relational content model can very easily be created with custom content fields that allow you to relate content items with any number of other content items in the database. You can display parent > child relationships, or reverse that and display child > parent relationships. Neat stuff, especially when you throw metadata/taxonomy into the mix.

And while I’m still just learning Drupal, as Adam Kalsey points out, the Node Reference module allows you to achieve the same sort of relational model that, in effect, lets you to create really complex relational models right through the control panel UI. Fun stuff.

Either one makes for flexible content modeling that would give you the subcontent patterns you’re used to using in your sites.

coskunlar vinc says:

You can do subcontent in Drupal through the Node Reference module. Node Reference allows you to attach other nodes to the current node.