This page is a part of the Content modeling guide which you should follow sequentially from beginning to end.
Content modeling guideThis page covers the options for creating, storing, categorizing, and managing content in Kentico Xperience.
When planning an Xperience project, it's important to carefully consider all possible options of content storage offered by the system and choose the approach most suitable for your project's requirements.
In each of the following sections, you can read about the benefits of a particular approach, and find links to relevant pages in our documentation:
From a high-level perspective, you can look at creating and managing content in Xperience in three different ways:
Content is created | Content is managed | Description |
|---|---|---|
Inside Xperience | Inside Xperience | The Xperience database is the single source of truth for all content (e.g., various marketing materials, company-specific information, or product-related documents). Before editors start producing content, developers must prepare relevant data structures (i.e., content objects) in the administration. |
Outside Xperience | Inside Xperience | Editors can create content before or parallel to the project's development. They can use another solution and produce content before the site is ready. When the development of the website progresses, developers import created content to Xperience using the Xperience API. Content editors can also prepare content using spreadsheets or some other parsable structure. Developers can then map and import the data using the Xperience API or Import Toolkit. |
Outside Xperience | Outside Xperience | This combination is typically used for content that needs to be managed using a specific external system, e.g., various ERP (opens in a new tab) or PIM (opens in a new tab) solutions for managing product catalogs. The content is either synchronized to Xperience using scheduled tasks, the Integration bus, or pulled directly from the external system at runtime (e.g., web services, SDKs, etc.). Note that this option introduces several competing content management systems into the setup. Duplicating content management systems can cause complications. For example, when content editors find an error on the live website, it may be difficult to identify where they can edit this specific content. |
Recommendations - Creating and managing content
Instances and sites in Xperience
Content is stored in sites grouped under one or more instances.
An Xperience instance is an installed version of the Kentico Xperience application. Within one Xperience instance, you can have any number of sites.
An Xperience website project consists of:
Each site runs on its own domain name, for which you need a valid license. Each site then stores its content in a separate content tree (see below).
Xperience offers multiple ways to store and organize your content. The following options allow for separating the data from its presentation (i.e., what will the data look like when displayed on the website). Each of these options, or more commonly their combinations, can be used to define content types for the project.
To store contentin Xperience, you can use:
See an overview of the differences between Pages, Custom modules, and Custom tables on the Defining website content structure page.
The following diagram overviews the basic options for storing data in Xperience:
We recommend using the schemas available at Schema.org (opens in a new tab) as a reference when defining which properties your content types contain (based on your project requirements and the options for storing content that you choose).
Pages are represented in a visual hierarchical structure called the content tree and managedin the Pages application.
Content types used in the content tree are based on page types. Page types define the basic structure of each content type and serve as a blueprint for every content item (i.e. page) created with thispage type. For example, every article made from the Article page type will have the same properties.
However, even though the name "page type" suggests it, not every item in the content tree needs to represent an actual page on the website. From this point of view, editors can create three types of pages in the Pages application:
Pages with dedicated URLs/slugs |
|
Page items |
|
Folders |
|
Content tree-based routing
Depending on the website implementation, the content tree-based routing feature can generate page URLs based on their position within the content tree hierarchy. Learn out more about features related to pages with URLs:
Recommendations - Pages
See our recommendations on when you should use pages to store content and what are the limitations of using pages for storing content.
The following diagram shows editors' options when adding content in the Pages application. Note that data used within the content type can be stored also in other data types (Xperience applications) and referenced in the page type. You'll learn about the presentation layer, including page templates, on the following page.
Types of content stored in Pages
Content types used in the Pages application are based on page types, which offer high flexibility for content storage. In Xperience, there are two types of content stored in pages:
Structured content allows you to store content without the need to focus on its layout. Editors manage page content on the Content tab and lay it out using page templates or page builder widgets. Editors define content through standardized format, which, if correctly presented on the live site, can have positive impact on how search engines understand and classify the content.
From a developer's perspective, structured content is strongly typed and stored in dedicated database tables per page type. This data is retrieved and displayed via the MVC live site application according to project requirements. Developers can use general MVC development conventions to retrieve the structured data using the Xperience API, and define various components that editors can use to display the data on the live site.
To lay out content on your website using the page builder widgets, you can use the structured content to create a reusable content repository within the content tree. Editors then add this structured content from the repository to the website using the widgets. The widgets usually contain a "selector" functionality that editors use to pick the intended content item from the content tree. The existing selectors always allow editors to select any item from the content tree, so when creating the content repository for reusable content, make the content items easy to find and navigate to.
Recommendations - Structured content
Structured content is the preferred way of building content on Xperience websites. It provides editors with the means to create and store quality, reusable and future-proof content.
We recommended using structured content for:
The Page builder is a user-friendly UI feature which allows editors to manage the website's content and layout using configurable page components, such as widgets and sections.
Editors work with the page builder in the Pages application on the Page tab and use it to construct entire pages or their sections. Developers prepare page builder components based on project requirements. These ready-made components help editors layout content without the need to ask developers for help every time they want to build a new page or adjust the design of an existing page.
For example, in the page builder editors can:
Recommendations - Page builder
In general, use the page builder as a tool to layout and design the content stored in a structured format. This approach helps editors focus on creating quality content and reuse it where needed.
We recommend using page builder content for:
When working with the page builder, you can use the Rich text and Form widgets provided out-of-the-box.
The following diagram shows the benefit of storing data separately from their presentation. From a user perspective, editors can create their data once and reuse it when needed.
Article (content type).
Editor creates a new page using an Article page type and selects a page template they want to use. The Article content type has the URL feature enabled to generate the page's URL and make it navigable by website visitors. Data input via the Content tab is stored in the "Article" *page type,*and data presentation (layout and styling) is handled via the page template. The Teaser image field in the Article page type references a filestored in a Media library; it doesn't store the file itself.
Landing page (content type)
Editor creates a new page using the Landing page page type and selects a respective page template. The Langing page page type has both the URL and Page builder features enabled. Using the Latest article widget, the editor displays some of the data stored in the Article: the Article's Name, Teaser image, and Summary. The widget references the selected Article using its GUID. If the widget has any properties that set design information for the displayed data, their configuration applies separately for each widget.
More about pages
Pages are the most common way for storing content in Xperience websites.
Find out more about:
Media play an essential part in defining the user experience on a website. Besides images and videos, companies often need to manage product documentation, legal contracts, share packages, and so on. Xperience allows you to upload files (e.g. GIF, JPG, SWF, PDF, XLS, DOC, ...) to the Xperience database or file system and manage them as any other content.
You can manage files in Xperience using three different approaches:
Media libraries provide a centralized repository for file storage and allow for easy distribution over Content Delivery Networks (CDNs). Editors can upload, manage, or update the files and their properties, such as their names or descriptions, using the administration interface. Editors can also reuse the files across the website and other channels, such as email. For example, editors can use files stored in media libraries to create image or video galleries, or just use the libraries for managing large amounts of files of different types.
Media library files can be also uploaded using the file system. Editors can create a hierarchy of subfolders inside their media libraries and move and reorder the stored files. However, moving files between different media libraries requires access to the file system.
Read more about when you should use media libraries to store content.
Recommendations - Media libraries
Using media libraries is the recommended approach for storing files. We namely recommend storing your website’s files in media libraries when:
Based on the size of the editing team and the way the team works, we recommend creating a more granular system of media libraries rather than creating a massive media library with a complex subfolder structure.
To enable search in media files, we recommend that developers create a custom smart search indexer as the binary data of media library files are not searchable by default.
Avoid using media libraries if you need to secure the files, as the files are always accessible under their URL. Instead, you can use either page attachments or handle access authorization through the IIS to restrict access to specific files.
Page attachments associate media files with a specific page and follow the life cycle and restrictions of the related page. This means that when editors remove the page, the attached files are also removed.
Recommendations
We recommend using attachments:
There are plans to replace Attachments by media library files with enhanced capabilities in the next generation of Xperience.
Instead of using the built-in Xperience media libraries or page attachments, you can also manage all your assets through an integrated third-party Digital Asset Management (DAM) solution.
Xperience offers integrations with:
You can also develop a custom integration with any other third-party DAM platform.
With custom modules, developers can extend out-of-the-box Xperience functionality. Content-wise, custom modules allow creating custom objects and database tables with relationship (e.g., 1:M, M:N bindings) for complex customer scenarios.
Find out more about when should you use module classes to store content.
Content types stored in custom modules can accomodate any content structure. You can create content types built using only custom modules or ones that combine data stored in both custom modules and pages. Data stored in custom module cannot be versioned through workflows.
Recommendations - Custom modules
Use custom modules when you need to:
Custom tables allow you to store large amounts of content without the hierarchy provided by pages (see above).
Developers can create custom database tables, and content editors can manage the table data directly from the administration interface without accessing the database or knowing MS SQL language.
Find out more about when to use custom tables and their limitations.
Recommendations - Custom tables
Use custom tables when you need to store many items in a flat data structure, i.e., without the content tree hierarchy of pages.
Custom tables are particularly useful when using standard data types (int, strings, etc.) and one-to-many relationships (radio buttons, drop-down lists, etc.).
Xperience offers several different ways of how you can categorize pages and organize content stored in pages. Page category properties can be used for page filtering and faceting (opens in a new tab) (in searches) or to present related content for specific pages. You can categorize pages:
One of the most common ways of categorizing pages is creating page categories directly in the content tree, using parent pages as categories.
Editors can use the linked pages functionality to include a single page into multiple categories, i.e. under multiple parent pages in the same content tree. A linked page creates a reference in the tree that points to another page in the content tree. Even though it displays as an "item" in the content tree, a linked page only references the original page and doesn't store any content. The content is stored within the original page.
Linked pages
There are specific attributes of linked pages you need to keep in mind when planning to categorize pages:
Read more about using the content tree structure in Categorizing pages.
You can handle page taxonomy using the built-in categories feature. Categories allow you to create a hierarchical structure (using sub-categories). Pages can then belong to any number of categories.
Read more about taxonomy based on categories in Categorizing pages and in Configuring categories.
Page categories are stored in a hierarchical structure bound to the CMS_Document table, meaning they are language-specific and don't need to fit every multilingual scenario.
Related pages allow you to create "named relationships" between pages in the content tree. Content editors can build explicit connections between specific pages or use related pages for more complex scenarios. For example, developers can create a dedicated Category page type that will be used in a dedicated Categories section in the content tree. Editors will then manually assign these categories as relationships to pages (or sections in the content tree). Developers can also use named relationships in advanced search scenarios.
Similar to categories, tags provide another option for creating page taxonomic properties. Unlike categories, the tags don’t have a hierarchical structure. Unless organized into predefined tag groups, tags have a flat structure.
Find out more about tags in Categorizing pages and in Configuring tags.
If none of the taxonomy options serve your project requirements, you can build your own custom functionality for categorization. For example, this third-party custom module (opens in a new tab) was developed as a custom categorization functionality.
Taxonomy recommendations - Simple categorization
Use the hierarchy of the content tree. Consider the following options when categorizing pages:
Taxonomy recommendations - Complex categorization
You have learned about the options of storing data in Xperience and how you can model taxonomies. On the Designing content in Xperience page, you’ll learn about different approaches of designing this data and presenting it in your web application.