Personalization module
Personalization Bundled: DX Core
| Edition | DX Core |
|---|---|
License |
This module includes GeoLite2 data created by MaxMind, available from www.maxmind.com. |
Issues |
|
Maven site |
|
Latest |
4.0.0 |
Yes |
Personalization
Personalization refers to adapting content to a particular user according to his or her personal preferences, needs and capabilities. In order to do so, you first select a set of traits of a visitor or a visit, then compose rules using these traits to define what content is presented to which visitors and when.
Modules
Magnolia’s Personalization feature consists of the following modules.
-
Blossom-compatibility: Provides personalization of Blossom components.
-
Components: Support for creating component variants.
-
Core: Personalization core.
-
Pages: Personalization integration for the Pages app.
-
Personas app: App for creating hypothetical visitors who represent your target audience.
-
Preview app: App for testing content delivery by impersonating a visitor.
-
Segmentation app: Provides the Segments app for grouping visitors into segments.
-
Traits: Example traits country, date, cookie and visitor.
-
Widgetset: Widgetset for client-side extensions needed for the variant-selectors.
<dependency>
<groupId>info.magnolia.personalization</groupId>
<artifactId>magnolia-personalization-components</artifactId>
<version>4.0.0</version> (1)
</dependency>
| 1 | Should you need to specify the module version, do it using <version>. |
<dependency>
<groupId>info.magnolia.personalization</groupId>
<artifactId>magnolia-personalization-core</artifactId>
<version>4.0.0</version> (1)
</dependency>
| 1 | Should you need to specify the module version, do it using <version>. |
<dependency>
<groupId>info.magnolia.personalization</groupId>
<artifactId>magnolia-personalization-integration</artifactId>
<version>4.0.0</version> (1)
</dependency>
| 1 | Should you need to specify the module version, do it using <version>. |
<dependency>
<groupId>info.magnolia.personalization</groupId>
<artifactId>magnolia-personalization-pages</artifactId>
<version>4.0.0</version> (1)
</dependency>
| 1 | Should you need to specify the module version, do it using <version>. |
<dependency>
<groupId>info.magnolia.personalization</groupId>
<artifactId>magnolia-personalization-personas-app</artifactId>
<version>4.0.0</version> (1)
</dependency>
| 1 | Should you need to specify the module version, do it using <version>. |
<dependency>
<groupId>info.magnolia.personalization</groupId>
<artifactId>magnolia-personalization-preview-app</artifactId>
<version>4.0.0</version> (1)
</dependency>
| 1 | Should you need to specify the module version, do it using <version>. |
<dependency>
<groupId>info.magnolia.personalization</groupId>
<artifactId>magnolia-personalization-rest</artifactId>
<version>4.0.0</version> (1)
</dependency>
| 1 | Should you need to specify the module version, do it using <version>. |
<dependency>
<groupId>info.magnolia.personalization</groupId>
<artifactId>magnolia-personalization-segmentation-app</artifactId>
<version>4.0.0</version> (1)
</dependency>
| 1 | Should you need to specify the module version, do it using <version>. |
<dependency>
<groupId>info.magnolia.personalization</groupId>
<artifactId>magnolia-personalization-traits</artifactId>
<version>4.0.0</version> (1)
</dependency>
| 1 | Should you need to specify the module version, do it using <version>. |
<dependency>
<groupId>info.magnolia.personalization</groupId>
<artifactId>magnolia-personalization-widget</artifactId>
<version>4.0.0</version> (1)
</dependency>
| 1 | Should you need to specify the module version, do it using <version>. |
Part of the module is also the magnolia-personalization-blossom-compatibility.
|
To be able to use personalization in the Delivery API, you should: |
-
Add the Blossom dependency (
magnolia-personalization-blossom-compatibility) only if you are using the Blossom modules in your project:<dependency> <groupId>info.magnolia.personalization</groupId> <artifactId>magnolia-personalization-blossom-compatibility</artifactId> <version>4.0.0</version> (1) </dependency>1 Should you need to specify the module version, do it using <version>. -
Make sure that in the content of your
pom.xmlfor your webapp you include the following two dependencies if your project is generated from the Magnolia webapp archetype:... <dependencies> ... <!-- include p13n for rest --> <dependency> <groupId>info.magnolia.personalization</groupId> <artifactId>magnolia-personalization-rest</artifactId> <version>2.1.1</version> </dependency> </dependencies> ...If you use personalization version 2.1.0, you also need to add the following dependencyManagement into your webapp’s
pom.xmlfile.... <dependencyManagement> <dependencies> <!-- include dependency management for p13n 2.1.0 --> <dependency> <groupId>info.magnolia.personalization</groupId> <artifactId>magnolia-personalization-parent</artifactId> <version>2.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ...
Configuration
Variant rendering restrictions on public instances
Public users cannot preview content variants. When a public user tries to access a variant—either directly or via a link, they see the original page with no variants applied.
A default rendering filter at /server/filters/cms/rendering continues to block direct URL access to mgnl:variant nodes on public instances for security purposes, returning a 404 not found response.
This doesn’t affect normal page rendering, Delivery API responses, or the Preview app, but means variants cannot be tested via direct URLs.
To test variants, use the Preview app.
For more information, see Restricting node type rendering.
Components submodule
Nested variants occur when a page variant contains component variants.
Control the ability for editors to create nested variants using the
allowNestedVariants property on the module level configuration.
| Node name | Value |
|---|---|
personalization-components |
|
config |
|
allowNestedVariants |
false |
| Property | Description |
|---|---|
|
optional, default is Allows you to create component variants inside a page variant if set to
|
Custom traits
Each trait has a configuration which can be adjusted. For configuration details, see the Registering a trait section on Creating custom traits page.
Issues
Missing CountryVoter
You may encounter the following issue:
2024-09-18 15:30:30,533 WARN agnolia.transformer.ClassPropertyBasedTypeResolver: Encountered the 'class' property but failed to resolved the type from its value: [info.magnolia.personalization.geoip.CountryVoter]
java.lang.ClassNotFoundException: info.magnolia.personalization.geoip.CountryVoter
Solution
-
Add the following dependency to your webapp:
<dependency> <groupId>info.magnolia.personalization</groupId> <artifactId>magnolia-personalization-compatibility</artifactId> <version>${personalization.version}</version> </dependency> -
If needed, copy the related configuration from
/modules/personalization-traits.