Page History
Implementation ideas
What we have:
- DeviceDetection which identifies the type of device with which the user is visiting the current page
- Is done in the filter chain
- Info is added to the aggregation state
- Channels "A channel allows you to deliver the same content in a different format or deliver content that is exclusive to a particular type of visitor."
- TemplateVariation that
- "[..] can be used in a number of ways, for example to reformat content for devices like smartphones and tablets, or specific output for groups of logged in users."
- See: Configuring variations in a page template
What we need:
- Facet detector that adds one/or multiple facet(s) to the aggregation state (or request)
- Should be chainable, i.e. multiple detectors can be in the filter chain depending on the needs (after/before cache)
- Any amount of detectors can be present
- get/setChannel in AggregationState should be deprecated and delegate to a "Channel" facet because it is actually just this
- Personalization-aware renderer that
- Selects the appropriate subnode (page variant)
- Wrapper that delegates to for example STKRenderer
- UI Components to
- Add/associate segments with a page (variant)
- Create/edit segments
- FacetManager / SegmentManager that can retrieve all available facets/segments
Sample Filter Chain & RenderingFilter details
- FacetDetector add facet to AggregationState or Request (possibly at different levels, i.e. before/after cache)
- Another FacetDetector adds more information
- In the
aJavadoc 0 info.magnolia.rendering.engine.RenderingFilter
decides where to get personalized contents from (subnodes/mixins/properties) and wraps themJavadoc 0 info.magnolia.jcr.decoration.ContentDecorator
contains all facets relevant to the current renderingJavadoc 0 info.magnolia.cms.core.AggregationState
renders contentJavadoc 0 info.magnolia.rendering.renderer.Renderer - TemplateVariationResolver resolves template configured for variant (see:
)Javadoc 0 info.magnolia.rendering.template.variation.RenderableVariationResolver - DynamicContentElements are rendered by ComponentRenderer and are Facet/Segment-aware
- TemplateVariationResolver resolves template configured for variant (see:
Note: The AggregationState should only contain one specific facet (class) (i.e. channel, device, etc.) at the time.
Storage structure
How are page variants stored?
How should the difference to the "master page" be stored? As delta or as a ful copy?
How are segment-associations stored?
...
Overview
Content Tools