eZ organizes content into Content items made up of Fields. A structure of a Content item is defined by its Content Type.
The role of a content management system is to organize and store content regardless of type and complexity. eZ allows you to create and modify flexible structures that perfectly satisfy customer needs. This is one of the key features that make eZ a versatile and successful system.
The basic unit with which you operate in eZ is a Content item. A Content item is a single piece of content: an article, a blog post, an image, a product, etc. Each Content item has a number of general characteristics such as name, but most importantly, it contains a number of Fields. These Fields will differ depending on what kind of Content you are dealing with. An article Content item may have Fields such as title, name, author, body, image and subscriber teaser, etc. A product Content item may have product name, category, price, size, color, etc. as Fields.
Each Content item belongs to a particular type which defines what Fields are available for it.
Conceptually, you can treat a Content Type as a kind of pattern (a template) on which you base Content items. Whenever you create a new Content item, you must choose the Content Type to which it will belong.
The Content Type defines what Fields will be available in the Content item. A Content item may only contain the exact Fields that are defined in the Content Type (although not all of them must be obligatory).
eZ allows you to create, edit and delete Content Types and their Fields. A pre-configured set of Content Types and their Fields for you to use is available in the Demo Bundle.
Content items versus Content Types
The difference between Content items and Content Types is important for understanding the fundamentals of content management in eZ.
A Content item is an instance of a particular Content Type, in other words a single object created based on a template that is the Content Type.
When a Content item is created, it inherits the Fields from its Content Type. However, the values of the Fields (their "contents") are empty and you need to fill them separately for each Content item. The Fields in a Content Type are only definitions. This means that they describe what Fields of what kinds will be present in a Content item, but as a rule they do not provide these Fields' values.
As a consequence, all Content items of the same Content Type will share the same set of Fields, but their Field values will be different.
To visualize this concept, you can think of a Content Type as a stencil that you use to create multiple prints. Each print will have the same shape, but may be filled with a variety of paints. In the same way, a Content Type defines the shape using the Fields that are provided in it. Each Content item based on this Type will have the same "shape," that is the same Fields, but can fill them with any "paint," that is any values of these Fields.
Legacy versions of eZ had the same underlying content model, but used different terms for describing it. For reference, the legacy terms were:
Content item – content object Content Type – content class Field – attribute Field Type – datatype
Fields and Field Types
Just like every Content item is based on a Content Type, so every Field belongs to one of the Field Types.
A Field Type defines what kind of data is stored in a Field. For example, a Field with a TextLine Field Type stores a single line of text, an Image Field Type stores an image, and Author Field Type holds information about author details (like name, email). By default, the system comes with a set of fundamental Field Types that cover most common needs (e.g. Text line, Rich text, Email, Author list, Content relation, Map location, Float, etc.)