The 5.7 branch of Magnolia reached End-of-Life on December 31, 2023, as specified in our End-of-life policy. This means the 5.7 branch is no longer maintained or supported. Please upgrade to the latest Magnolia release. By upgrading, you will get the latest release of Magnolia featuring significant improvements to the author and developer experience. For a successful upgrade, please consult our Magnolia 6.2 documentation. If you need help, please contact info@magnolia-cms.com.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Use the Magnolia Content type definition to specify a content type.

The Magnolia Content Types module is currently available as a Developer Preview. Development for the first official release is still underway.

This developer preview brings several powerful features. Please try it out and feel free to send us your feedback and suggestions based on your experience.

We are working to finalize the module as soon as possible.

A Magnolia content type is a formal definition for a type of content in Magnolia including the properties the type may contain and its relationships to other types of content. A content type is configured in a content type definition that includes the data source definition and the model definition.

Content type items can be managed by a content app. The content can be embedded into web pages or served via REST in a headless approach.

The base interfaces for content type definition are agnostic of data source type. However, the magnolia-content-types module provides also specific definition classes for JCR data to define custom JCR workspaces, node types, and namespaces.

The definition item can be supplied via any Magnolia Resource origin. You can create them in a light module, in a Magnolia Maven module or in the JCR configuration workspace (see Location of the content type definitions).  New content type definition items are detected by the  magnolia-content-types  module and registered at the  ContentTypeRegistry  using the name of the definition as the ID.


Properties

Example configuration:

/content-type-examples/contentTypes/tourGuide.yaml
datasource:
  workspace: tourguides
  namespaces:
    mt: https://www.magnolia-travel.com/jcr/1.0/mt
  autoCreate: true
   
model:
  nodeType: mt:tourGuide
  properties:
    - name: birthday
      type: Date
    - name: gender
    - name: shortBio
Here we only focus on the top level properties of the content type definition.

datasource

required

Defines the data source. Please read Content type Data source definition for further information.

model

required

Defines the model of the content type. Please read the Content type Model definition for further information.

name

optional

The value of the name property is automatically assigned by the name of the resource which defines the content type (YAML file name without the suffix or JCR node name).

Set the property in the content definition to override the automatically assigned value.

Location of content type definitions

The definition item can be supplied via any Magnolia Resource origin. You can create them in a light module, in a Magnolia Maven module or in the JCR configuration workspace.

Add the configuration to the /<module-name>/contentTypes folder.

my-light-module/
└── contentTypes
    └── my-content-type.yaml

Name of the definition: my-content-type

Add the configuration to the resources/<module-name>/contentTypes folder.

my-maven-module/
└── src
    └── main
        └── resources
            └── my-maven-module
                └── contentTypes
                    └── larrys-content-type.yaml

Name of the definition: larrys-content-type

Add the configuration to the /modules/<module-name>/contentTypes folder.

Node name

 
modules

 
my-custom-module

 
contentTypes

 
boat-content-type

Name of the definition: boat-content-type

Interface and class

The base interface for a content type definition is ContentTypeDefinition. The base implementation class is ConfiguredContentTypeDefinition.

  • No labels