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 a channel 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 workspace website
  • /* maps to the virtual workspace magnolia
  • 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
  • No labels

5 Comments

  1. 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?

    1. Parameter is mgnlChannel. You would pass in the URL like this: http://localhost:8080/magnoliaAuthor/demo-project/?mgnlChannel=mobile

  2. Please add Javadoc comments to package info.magnolia.channel.

    1. 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.