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 |
3.0.2 |
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.
-
Compatibility: Provides the 5 UI framework modules.
-
Components: Support for creating component variants.
-
Core: Personalization core.
-
Integration: Personalization support for creating page variants and fields for selecting traits and audiences.
Since version 2.0, this submodule has been deprecated and its functions relocated to the Compatibility submodule.
-
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 ppp 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-compatibility</artifactId>
<version>3.0.2</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-components</artifactId>
<version>3.0.2</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>3.0.2</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>3.0.2</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>3.0.2</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>3.0.2</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>3.0.2</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>3.0.2</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>3.0.2</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>3.0.2</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>3.0.2</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>3.0.2</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.xml
for 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.xml
file.... <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
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
.