GREYImplementation tracked in MAGNOLIA-3895@jira. GREY
Rationale
- the same content should be delivered differently (different HTML, format, ...)
- a channel can be: a device, location, medium
- content can be excluded or made exclusive to one channel
Detection
AggregationState
has achannel
property (a string)- the multi channel filter sets this value by using a
ChannelResolver
** the STKChannelResolver uses the configured channels (see configuration) - default value is Channel.ALL
- a
channel
parameter can be passed to oversteer the mechanism
Device
- device detection filter only detects the device
- setups DeviceCapability (set as a context attribute, use IoC to get the object)
- this information is used by the
ChannelResolver
invoked by the multi channel filter
Caching
- the channel is part of the cache key
Rendering
- the default RenderableVariationResolver uses the current channel name
Content Structure
- content can be marked for specific channels (multiple channels)
- in the STK we provide a tab used by all the page properties dialogs
- channels are read from site.channels
- the some tab can be used by components if needed
- the channels are stored in the multivalue property
channels
- if no such channel property exists the content is available in all channels
Content Delivery
- urls to
/website/*
map to the physical workspacewebsite
/*
maps to the virtual workspacemagnolia
- the virtual workspace
- uses the channel property of the aggregation state and the content to exclude/include content
- mainly a content filter
- implemented by a filtering session wrapper
- the virtual workspace is registered on startup
Configuration
- the channels are configured in site/channelConfigurations (ordered map)
- each channel has a resolver (an interface)
- used by the global ChannelResolver
- first match wins
AdminCentral
- open /website/* url
- make it configurable
Alternative: request parameter
- pass the channel request parameter
mgnlChannel=[ALL|mobile|tablet|etc.]
in the URL - should we do that for the site name
- use the new named and pimped selectors
Overview
Content Tools
5 Comments
Antti Hietala
How do you pass the channel request parameter in the URL? What is the name of the parameter? If I have a channel
mobile
, what would the URL look like?Antti Hietala
Parameter is
mgnlChannel
. You would pass in the URL like this: http://localhost:8080/magnoliaAuthor/demo-project/?mgnlChannel=mobileAntti Hietala
Please add Javadoc comments to package
info.magnolia.channel
.Christian Hauser
Will it be flexible to configure the request handler how output channels are called?
Query based: http://localhost:8080/magnoliaAuthor/demo-project/?mgnlChannel=mobile
URI based: http://mobile.localhost:8080/magnoliaAuthor/demo-project
URI based: http://localhost:8080/magnoliaAuthor/demo-project/mobile
Natascha Desmarais
I think you might be missing the concept behind channels there. From what you write, it seems more like a site configuration. However, the idea is to have the same address in various cases that deliver a different content and/or design. Or sometimes you want to hide a complete page from a channel (example: hide a heavy video page from mobile devices completely or provide a different one with less and more relevant videos).
With this, you wouldn't need a specific URL that you need to redirect users to (i.e.: mobile.mydomain.com), because the same site in your website tree would serve all the channels without having to think about setting up specific sites for different devices.