eXtra-data schemas

Contents

X-data (short for eXtra data) makes it possible to dynamically extend existing content types with a new form. When editing content, X-data fields will be displayed inside a separate step in the content form.

If you want to inject fields inside content type’s form rather than appending a form, consider using a mixin

Definition

The file with X-data schema must be placed in the folder site/x-data/[name] and called [name].xml. For example, site/x-data/address/address.xml.

<x-data>
  <display-name>Full address</display-name>
  <form>
    <input type="TextLine" name="addressLine">
      <label>Street address</label>
      <occurrences minimum="0" maximum="2"/>
    </input>
    <input type="TextLine" name="city">
      <label>City</label>
      <occurrences minimum="1" maximum="1"/>
    </input>
    <input type="TextLine" name="zipCode">
      <label>Zip code</label>
      <occurrences minimum="1" maximum="1"/>
    </input>
    <input type="TextLine" name="country">
      <label>Country</label>
      <occurrences minimum="1" maximum="1"/>
    </input>
  </form>
</x-data>

Usage

To activate X-data for your project or site, it must be referenced in the application’s site.xml. The example below adds the address X-data to all content types within its scope.

/src/main/resource/site/site.xml
<site>
  <x-data name="address"/>
  <form/>
</site>

Configuration

It’s possible to restrict X-data for specific content types using regular expressions. This is especially convenient when you apply X-data to all content types via site.xml but want to exclude some content types.

Use regular expressions in the allowContentTypes attribute of the <x-data/> field inside site.xml to enable or disable it for specific content type(s). By default x-data will be added to content items of all types with no option to remove it but you can make it optional by setting optional attribute to true. Optional x-data has to be manually enabled inside Content Wizard to be added to the content data.

If allowContentTypes and optional attributes are not set, the x-data will automatically be enabled for all content types. See modes of content type filtering.

<site>
  <x-data name="my-x-data-1" />
  <x-data name="my-x-data-2" allowContentTypes="^(?!base:folder$).*" />
  <x-data name="my-x-data-3" allowContentTypes="portal:site" optional="true" />
  <form/>
</site>

In the example above my-x-data-1 will be enabled for all content types, with no option to disable it in the Content Wizard.

my-x-data-2 will be added for all content types with no option to remove it in the Content Wizard, except for content type base:folder for which it will not be shown at all.

my-x-data-3 will be enabled only for sites (which are using internal content type portal:site) and will be optional, meaning user has to manually turn it on in the Content Wizard.


Contents

Contents