Anchor | ||||
---|---|---|---|---|
|
The formats that are available for Media Feeds are JSON, Media RSS, and RSS 2.0. These three options make it possible for you to select the best format for the content items that are returned by the Media Feed. The design template used to render the content in a Media Feed (MediaFeed) can also be modified in order to optimize the visual appearance of the results that are shown. Because a Media Feed is accessed through a URL that is relative to the root address of your website, you can define a public friendly URL that is intuitive and makes clear what the content is (/feed/articles
, /feed/multimedia
and /feed/mobile
, for example).
A Media Feed can display the following content item types:
...
Parameter | Description |
---|---|
any, all, not | Specifies the media items to include based on assigned tags. For example, the URL
would return all media items containing the tags |
from, to | Specifies the number of results to return. For example, the URL
would return items 1 through 5. |
sort | Sorts the results according to the following parameters:
For example, the URL
would return all media items with the tag |
order | Sorts the results in ascending (
would return all media items with the tag |
contenttypes | Specifies the media items to include based on their type. The type options are:
For example, the URL
would return all media items of type |
...
XperienCentral Headless
XperienCentral Headless is a hybrid version of XperienCentral Traditional which contains a subset of the full set of licensed components as well as a rich text editor that does not show you a representation of what content items look like when presented on a website frontend. In XperienCentral Headless content is delivered in JSON format and no direct styling is performed. This functionality can be used to compliment Media Feeds. See XperienCentral Headless for complete information.
...
Panel | ||||
---|---|---|---|---|
| ||||
The following applies to XperienCentral versions R43 and higher. |
Creating a Custom Media Feed Listener
The Media Feed functionality is a mechanism that presents a list of content items to a website visitor. In some XperienCentral projects it is desirable to have a mechanism that overrides improves the basic Media Feed mechanism. By adding a customer listener, you can implement your own interface and take control over the Media Feed output. A custom listenet makes it possible to:
- Overrule the method that retrieves the content items from XperienCentral.
- Overrule the
MediaItemFilter
instance that is used for the default retrieval of items. - Overrule the
MediaItemSortOptions
instance that is used to sort the items. - Perform custom filtering on the retrieved items, given the items, filter options and sort options.
- Determine which
queryString
parameter(s) should be passed on to the Media Feed JSP.
The following is an example of a listener that overrides the default Media Feed functionality. The full source of this custom plugin can be downloaded using the link below the code sample.
Code Block | ||
---|---|---|
| ||
/* * Copyright (C) 1998 - 2020 GX Software B.V. All rights reserved. The contents of this * work is confidential. It is prohibited to copy, duplicate or alter this work in any * manner without the express prior written approval of GX Software B.V. */ package com.gxwebmanager.solutions.examplepresentation.service; import nl.gx.product.wmpmediafeed.api.FeedListenerBase; import nl.gx.webmanager.cms.mediarepository.*; import nl.gx.webmanager.foundation.Session; import nl.gx.webmanager.services.contentapi.MediaRepositoryManagementService; import nl.gx.webmanager.services.sessionmanager.SessionManager; import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.logging.Logger; /** * * ExampleFeedListener * */ public class ExampleFeedListener extends FeedListenerBase { private static final Logger LOG = Logger.getLogger(ExampleFeedListener.class.getName()); private MediaRepositoryManagementService myMediaRepositoryManagementService; private SessionManager mySessionManager; /** * {@inheritDoc} */ public String getIdentifier() { return "Example Feed listener"; } /** * {@inheritDoc} */ public List<MediaItem> getMediaItems(HttpServletRequest request, MediaItemFilter filter, MediaItemSortOptions sortOptions) { LOG.warning("getMediaItems from ExampleFeedListener: return only first 3 items"); List<MediaItem> items = new ArrayList<>(); Session session = mySessionManager.getActiveSession(); boolean sessionCreated = false; if (session == null) { session = mySessionManager.createSession(request, null); sessionCreated = false; } try { //We should ignore the existing items but do a proper query ourselves int from = filter.getResultFrom(); int to = filter.getResultTo(); // retrieve everything filter.setResultRange(0,3); MediaSearchResult searchResult = myMediaRepositoryManagementService.getMediaItems(session.getContext().getWebsite(), filter, sortOptions); LOG.warning("getMediaItems from ExampleFeedListener: query returned "+searchResult.getCount()+" items, but we only use first 3 items"); MediaItem[] allitems = searchResult.getResults(0, 3); if (allitems != null) { for (MediaItem item : allitems) { items.add(item); } } return items; } finally { if (sessionCreated && session != null) { session.close(); } } } public List<MediaItem> filterMediaItems(HttpServletRequest request, List<MediaItem> items, MediaItemFilter filter, MediaItemSortOptions sortOptions) { LOG.warning("filterMediaItems from ExampleFeedListener: do nothing, but here you could filter the returned items"); return null; } public MediaItemFilter overruleFilter(HttpServletRequest request, MediaItemFilter filter) { LOG.warning("overruleFilter from ExampleFeedListener: do nothing, but here you could overrule the filter"); return null; } public MediaItemSortOptions overruleSortOptions(HttpServletRequest request, MediaItemSortOptions sortOptions) { LOG.warning("overruleSortOptions from ExampleFeedListener: do nothing, but here you could overrule the sort options"); return null; } public List<String> getAllowedParameters(HttpServletRequest request) { LOG.warning("getAllowedParameters from ExampleFeedListener: do nothing, but here you could overrule the allowed parameters"); return null; } } |
View file | ||||
---|---|---|---|---|
|