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 2 Current »

This page explains how you can reuse JCR based configuration of Magnolia definition items with the extends mechanism.

The JCR extends mechanism is based on JCR nodes and properties. JCR configuration data can be extended on any node level, and thus on any level of configuration. JCR extends allow to extend sub items of a JCR-defined item definition.


Overview

You can extend a JCR configuration by defining an extends property and setting its value to the source configuration you want it to inherit. The target configuration inherits everything from the source and adds its own exceptions. This can save time and effort as you only need to define exceptions explicitly. Use extendsoverride to exclude sub-nodes of the extended node.

The mechanism is only available in the config repository.

In the example below, the sportstation site definition extends the travelsite definition. 

Node nameValue

 
fallback


 
travel


 
sportstation


 
mappings


 
extends

override

 
theme


 
templates


 
domain


 
extends

override

 
i18n


 
extends

../travel

The definition inherits all configuration from the default configuration and adds its own domains, internationalization and URI-to-repository mappings. The extends property can point to the source configuration with an absolute or relative path. The nodes 

Examples

Generic tabs in dialogs

You can use Magnolia's extends mechanism to minimize configuration. For example, if you have a number of components that include an image, you can configure a generic image tab and use it by extension in all relevant dialogs.

This example configuration shows the use of a generic imageTab in a TextImage dialog.

Node nameValue

 
<my-module>


 
dialogs


 
components


 
textImage


 
actions


 
form


 
tabs


 
textTab


 
imageTab


 
extends

/modules/my-modules/dialogs/components/generic/imageTab

 
generic


 
imageTab


 
fields


 
image


 
position


 
size


 
title


 
altText


 
description


Property:

extends

optional

Path to the configuration that is extended.

Extending JCR node based template definitions

You can configure one template in full and create as many extensions with slight differences as you like. The mechanism is used to minimize configuration. Only changes, exceptions and additions are configured in the extended configuration. All other configurations are taken from the original configuration.

The extends property has two possible values:

  • </path to extended template>: Used to reference the template that is extended.
  • override: Used to override a portion or part of the configuration that is extended.

In the example below page-template-2 extends page-template-1. The extended template uses the full configuration of the template it extends except the configurations in the extended template.

Node nameValue

 
page-template-1


 
page-template-2


 
areas


 
content


 
availableComponents


 
news-component-1


 
news-component-2


 
extends

 override

 
extends

/modules/my-module/templates/pages/page-template-1

 
subType

news

 
title

Extended Template
  • No labels