The principles for data modelling.
Data modelling is how Litium defines the information required by a business, as well as the information displayed to the end users in a public website. This includes product information, article information and any other webpages containing that information. Other information also needs to be modelled, for example that required for integration or in the back-office functionality for day-to-day work.
Information is data of a certain data type, for example numbers and strings. Some data types can be a set of pre-defined strings, which are called text option fields. Color and size are two examples of that.
Most entities in Litium support definition of your own fields and field types. They are arranged into field templates where, for example, a product has a product field template and a media file has a media file template. The field template arranges the list of fields and groups them using field groups. In Products and in Websites, the field templates also have a display template. It defines how the fields are going to be displayed in the public website.
Entities

(Entities which supports datamodelling from Litium 7 are shown in green, and from Litium 5 and Litium 6 versions are shown in blue.)
For all these entities, you can define your own fields to model the information you require. In addition, you can have a pointer field that will point out the entities in Litium. You can also have a multi-field, which is a collection of fields that you have. This means a composite field can be created by using other fields.
Field types
The field type is the lowest level in the field framework and handles how fields are loaded or persisted in the data store. The field type is also responsible for creating the correct filter on the field from querying in the data service.
Custom field types can be created and added to the solution, read more about how to extend here.
Field types are global and not bound to a specific part of Litium.
Field definitions
Field definitions are created to define the type of a field. For example, "Name" is a field of the type “text”. The field definition contains settings on the instance of the field, for example multi language for fields that can have values in multiple languages.
Field definitions are specific to different areas of Litium. If you try to save a field that doesn't exist as a field definition in the current area of Litium, an exception will be thrown.
Field templates
Field templates are used to decide what an administrator, and in some cases public visitors, will see. Field templates are specified for each entity. For example for a category or a product.
In a product field template, fields can be specified for both the base product and variant. One field can exist in multiple field groups and only specifies if, and where, the field should be visible in the administration view or on the public site.
Values for fields that are not included in any field template can still be set through the API.
Display templates
A display template is a definition of how the rendering should work. For example the actual template that should be used (MVC Controller).
For Products, the display template also decides if variants should be exposed as separate items with their own URL on the public site, or if they all should be exposed as a product family with one URL.