Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,075 of 9,075 pages
About the help in other languages
All help pages

Designing your content model

Turn a content inventory into classes, attributes, containers, view modes and relations - the rules of thumb that keep an Exponential content model simple to edit, template and change later.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/website-creators/designing-your-content-model.md

On this page

Designing your content model

This page is for website creators who decide which content classes a site gets. The content model is the most lasting decision of a site: templates and designs change often, the structure of content much less. A good model is easy for editors, easy to template and easy to extend.

The classes of the Content group: each class with its identifier, the number of objects and when it was changed
The classes of the Content group: each class with its identifier, the number of objects and when it was changed

Contents

  1. The building blocks
  2. From inventory to classes
  3. Rules of thumb
  4. Containers and children
  5. View modes: one class, several looks
  6. A worked example
  7. Review checklist

The building blocks

From The content model and editing:

TermMeaning
Content classa type of content: name, identifier and a list of attributes
Attributeone field of a class, with a datatype (ezstring, ezxmltext, ezimage ...)
Content objectone piece of content, with versions and translations
Node (location)a place of an object in the content tree; an object can have several
Class groupa folder of classes in the class editor

From inventory to classes

Start from the inventory (Site map and content inventory):

  1. Group rows that have the same fields: they are one class.
  2. For each class, list the fields; each becomes an attribute with a datatype (Choosing datatypes for your fields).
  3. Check the classes the site package already ships (Folder, Article, Image, File, Link, Blog post, Product, Event, Feedback form ... on the default installation). Reuse before you create.
  4. Decide which classes hold children (containers) and which are leaves.
  5. Decide the object name pattern of each class, for example <title>: it becomes the object's name and URL.

Rules of thumb

RuleWhy
Identifiers in lower case with underscores (news_item, start_date)templates and overrides use them; they never change
One class per kind of content, not per placea "news" article and a "press" article are the same class in two folders
Few required fieldseditors can save drafts; templates check for empty fields
Rich text (ezxmltext) for bodies, plain text for teasers and titlesplain text is easy to reuse in lists, feeds and meta tags
Images as their own objects, related from articles, when they are reusedone image in many articles, one place to update its text
A field per fact you will sort, filter or show separately (date, price, location)you cannot sort by a sentence inside the body
Do not encode presentation (colors, column counts) in contentthat belongs in templates or the layouts editor

Containers and children

A class marked as a container may have children. Use it for folders, blogs (posts as children), galleries (images as children), products with variants. Leaves (an image, a file, a link) are not containers. A container's full template usually lists its children with their line view.

View modes: one class, several looks

The same object is shown in different ways depending on where it appears: full on its own page, line in a list, embed inside rich text, others your design defines. Each view mode is a template, chosen per class with an override (Template overrides for site builders). Plan the view modes per class early:

Classfulllineembed
<article>pagetitle, teaser, imagetitle and link
<event>pagedate and title
<image>image with captionthumbnailimage in rich text

A worked example

A site for an events venue:

ClassIdentifierContainerAttributes (identifier: datatype)
Folderfolderyesname: ezstring, short_description: ezxmltext
Eventeventnotitle: ezstring, start_date: ezdatetime, end_date: ezdatetime, teaser: eztext, body: ezxmltext, image: ezobjectrelation, tags: eztags
Venue roomroomnoname: ezstring, capacity: ezinteger, description: ezxmltext
Articlearticleyesthe shipped class

Events relate to a room with an ezobjectrelation field, so the room page can list its events through reverse relations (Relations and content reuse).

Review checklist

  • To do: Every class has a clear purpose and an identifier that will never need to change.
  • To do: Every attribute has a datatype chosen for how it is used (sorted, filtered, shown).
  • To do: Name patterns produce readable names and addresses.
  • To do: Containers are marked; leaves are not.
  • To do: View modes are listed per class.
  • To do: Translatable fields are marked translatable; fields like a price may be marked as not translatable.
  • To do: Editors have seen a draft of the edit form and understand every field.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x