Flexible Content Model

The content model is an important pillar in any web content management architecture. In accordance with its open platform philosophy, Hippo CMS offers flexible content model building blocks while adhering to elementary principles.

Separation of Concerns

The core principle of Hippo CMS’s content model is separation of concerns. Content is kept strictly separated from presentation and delivery. This enables easy content sharing, multi-channel delivery (including REST and mobile apps), and long-term sustainability in general. Change your site navigation, change your presentation templates, change your frontend technology if you like; your content is ready for it.

Flexibility

Hippo CMS provides the basic building blocks to build your own document-based content model. Your content types can be structured, unstructured or a mix of both. You define data models and editing templates that are as flexible or as strict as you like. Support for inheritance and composition provides efficiency and consistency.

Use rich text content with WYSIWYG authoring where it makes sense, and configure the level of richness you need: from simple text decoration to full-on HTML capabilities including configurable semantic CSS classes that can be applied to text by authors.

Define metadata as strictly or as loosely as fits your needs. From free text keywording, through managed key-value lists, to full-on multilingual taxonomy management. All metadata can be used to configure faceted navigation structures.

Authorization is role-based and can be applied to any possible subset of content.

Link Integrity

Broken links are a nightmare for anyone managing web properties. Hippo CMS stores internal links in content as location-independent references, and the delivery tier resolves them on-the-fly. Moving content around does not break any links. Authors can view incoming links to any document, and receive a warning before deleting a document if the deletion will break any links. Similarly they get a warning before publishing a document if it links to any unpublished documents.

Multilingual

Supporting multiple languages and regions can be a complex challenge. Exact requirements depend on many factors including organizational structure, business processes and local laws. Again, Hippo CMS provides a flexible model that lets you manage multiple translations of content, from single documents to complete content trees.

The basic element in the model is the document. Each translation of a document is stored as a separate document. How you organize your translated documents is up to you. Completely separate translated content trees, or a single content tree where translation live next to each other, or anything in between. Strict 1-on-1 relations between translated trees, or loosely coupled translations, or anything in between. You decide, Hippo CMS’s translations model supports it all.

Layered Architecture

Under the hood Hippo CMS’s content model is based on a layered architecture.

The foundation of the model is a JCR-compliant content repository, in which content is stored as properties of nodes in a tree structure. Node type definitions determine the structure of the tree and the primitive types of the properties. The repository content is persisted in a relational database.

The authoring application maps the JCR node types to content types and enriches them with editing templates, which are used by the document editor to allow authors to create and modify individual documents.

The delivery layer maps JCR node types to Java classes, so-called content beans, which act as the models in a Hierarchical Model-View-Controller pattern.

//onehippo-prod.global.ssl.fastly.net/binaries/ninecolumn/content/gallery/connect/architecture/uml/why-hippo/content-model.png

Tool Support

Content types are defined using an easy-to-use modeling tool with WYSIWYG UI. Just create the editing template and the data model is automatically generated. Java content object mappings for use in your delivery tier implementation are auto-generated as well.

Content models evolve over time. When you make changes to your content model, Groovy scripting can be used to update existing content on-the-fly.