Magnolia 5.7 reached extended end of life on May 31, 2022. Support for this branch is limited, see End-of-life policy. Please note that to cover the extra maintenance effort, this EEoL period is a paid extension in the life of the branch. Customers who opt for the extended maintenance will need a new license key to run future versions of Magnolia 5.7. If you have any questions or to subscribe to the extended maintenance, please get in touch with your local contact at Magnolia.
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 extends
& override
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 travel
site definition.
Node name | Value |
---|---|
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 name | Value |
---|---|
<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 name | Value |
---|---|
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 |