Component inheritance
Inherited components are displayed on child pages automatically. Inheritance saves editors time and effort and it helps display content consistently across the site. For example, use inheritance for promotional content that changes often. When you update the content on the home page it updates everywhere in the page hierarchy.
Inheritance behavior
Inheritance behaves like this by default:
-
Editable in parent only: Inherited components can be edited only on the parent page. They don’t have toolbars on child pages.
-
Order is inherited: Inherited components are displayed in the same order on parent and child pages.
-
Inherited first: Inherited components are displayed before non-inherited components in the same area.
Inheritance properties
Configure component inheritance in an area definition. Simple example where all components are inherited:
areas:
promos:
renderType: freemarker
type: list
availableComponents:
text:
id: my-module:components/text
inheritance:
enabled: true
components: all
Property | Description |
---|---|
|
optional, default is
|
|
optional, default is `filtered` Defines which components are inherited to child pages. Valid values:
|
|
optional, default is `all` Inherits area
properties such as Valid values:
|
|
optional, default is `info.magnolia.rendering.template.configured.ConfiguredInheritance.NodeDepthComparator` Defines the order in which inherited components are displayed on the
child page. The default |
|
optional, default is `info.magnolia.rendering.template.configured.FilteredInheritancePredicate` In Java, predicate is a functional interface that returns either |
Implementing Filtering
Filtering can be achieved by using the inheritable
property. This is a
content property set by the component dialog which is then read at
render time.
- Example
form:
properties:
heading:
$type: textField
label: Heading
text:
$type: richTextField
label: Disclaimer Text
inherit:
name: inheritable
$type: checkBoxField
label: Inherit
buttonLabel: Inherited by Subpages
defaultValue: true