Lithium Community 18.10 Release Notes
2018 is coming to a close. The 18.10 Release will be the last Community release of the year to accommodate our Holiday Production Freeze. We'll be back in early January with Community 18.12, which will include all feature and bug fixes for November and December.
New Features
- Product Associations
- Community structure performance improvement
- Richer auto-suggest search results
- Create different SEO titles and descriptions for each variant of a custom page
- Configure the number of email escalations allowed per topic/post
Product Associations
We've introduced a new feature called Product Associations and have made changes to our Product Mentions feature. With Product Associations, community members can easily create, find, and interact with discussions about specific products anywhere in the community. This allows brands to seamlessly curate experiences around specific products and helps customers discover all the information they need faster. You can watch an overview of Product Associations here (starting at minute 17:00).
Note: The Product Associations feature is designed for use with the Responsive Skin. While you can add product associations to messages in a community using a non-responsive skin, these supporting Products components and pages will not work properly.
Product Associations and the improved Product Mentions features require upgrading to Products v2 in Studio > Features.
- About Product Mentions and Product Associations
- Mobile screenshots
- New components
- What's changed with Product Mentions
- Product subscriptions
- New product API support
- Product Mentions and Product Associations documentation
About Product Mentions and Product Associations
In Community posts, customers can use hashtags to mention products in the message body. This is supported on desktop and mobile devices. When the customer types the # symbol, a drop-down menu appears. As the customer types, more characters matching products in the product catalog appear as suggestions.
These product mentions (also referred to as #mentions) appear as hyperlinks in the message body. Mentioned products appear in below the posted message body in a component called product-snippet.
When a user hovers over the product mention in the body (in desktop view only), a hovercard appears with a link to take the user to your commerce site.
Behind the scenes, a product mention creates a product association between a product and the message in which the product is referenced. This association is essentially metadata on the message.
In addition to a message author, other community members (Administrators, Moderators, and users with specific permissions) can also create product associations by adding them in a new Associated Products field in the Post Page, Edit Page, and Reply Page. Products associated with messages in this way also appear in the product-snippet component but are not added as hyperlinks in the message body.
Clicking a hyperlink or on an image in the product-snippet component takes the user to the Product Page in the community.
Mobile screenshots
Product Associations are supported on mobile devices.
New components
To support Products, we've added new components:
- Top Associated Products
- Product Message List
See Product Association pages and components for full details.
Top Associated Products
The Top Associated Products component displays products with the highest number of associated messages scoped to a Community, Category, or Board. The Top Associated Products component is not included in any pages by default. You must add it manually in Studio or using the Community Plugin SDK. In Studio, you'll find the component under the Products section of the Components list on the Page tab.
Product Message List
The Product Message List component displays a list of messages associated with the product in context. This component can be used only on the Product Page.
The component displays one of the following message lists:
- Latest Topics - Topics most recently posted to the selected node that have associations with the product in context
- Latest Replies - Replies that have associations with the product in context most recently posted to the selected node
- Top Topics - Topics with the most kudos that have associations with the product in context
- My Topics - Topics that have associations with the product in context posted by the user in context
What's changed with Product Mentions
As of 18.10, when Products v2 is enabled in Studio > Features:
- The auto-suggest in the product mentions drop-down menu now includes an image of the product.
- The product-snippet component has a new look and new functionality:
The product carousel is no longer supported. Instead, the user selects a View All link to display all associated products in the product-snippet component. - Selecting a product mentions hyperlink in the message body or a product in the product-snippet component takes the user to a new page called Product Page (ProductPage.quilt.xml) instead of taking the user to the Product URL for your commerce site defined in the Product Catalog. The user navigates to the product in your commerce site using the View in Store buttons in the product mention hovercard and the Product Page.
- The product-snippet component has a new look and new functionality:
- The product-snippet is supported only in the Responsive Skin when Products v2 is enabled. The product-snippet component is not supported in non-responsive skins.
Product subscriptions
Community members can now subscribe to products and request notifications regarding product-related activity. Product subscriptions are set at the Community level.
Customers can subscribe to products in the Product Details page by selecting the Subscribe option in the Options menu. Once a customer subscribes to a product, the customer can unsubscribe from it either in the same Options menu or in the subscriptions list view in the Subscriptions & Notifications > My Subscriptions tab in the My Settings page in the Community. See Product subscriptions for more details.
Note: We do not support creating product subscriptions via the Community API.
New product API support
We've added API support for several Product Association and Product Mention tasks. See Product Association and Product Mention API examples for instructions to:
- Post a message with product associations
- Post a message with a product mention
- Post a reply with product associations
- Edit product associations on an existing message
- Remove all product associations from a message
- Add or remove a single product association to an existing message
- Retrieve products association details
- Retrieve posts that mention or are associated with a product
Product Mentions and Product Associations documentation
See these TKB articles to get started with Product Associations and the updated Product Mentions features:
- About Product Mentions and Product Associations
- Product Mention and Product Association workflows
- Enable Product Mentions and Product Associations
- Set Product Mention and Product Association permissions
- Product Association pages and component
- Product subscriptions
- Product Association and Product Mentions API examples
- Feature versions - Products
Community structure performance improvement
For large community sites that have a massive number of nodes (in the thousands/tens of thousands), the Community Structure tab (Admin > Community Structure) used to take an unacceptably long time to load the node tree or, in some cases, not load at all.
We have re-tooled the way that this page and the node structure load for large sites to prevent this delay/failure from happening, and now the community structure (regardless of size) should load in a couple of seconds.
By default, this configuration change is disabled (since not all communities are large enough to require it). If you have a community with thousands of nodes and would like to take advantage of this lazy-load option, open a Support ticket and request to have it enabled. When enabled, opening the Community Structure tab will load the first 500 nodes and provide previous/next links to view additional nodes.
Note: You can request to have the number of nodes per page increased (up to 1000), but as you increase the page size, it will take a bit longer to load.
Richer auto-suggest search results
To help you find the answers you need faster, we have improved the auto-suggest search results experience.
Note: This improvement requires upgrading to Search 3.1 in Studio > Features.
Previously, when you searched, the matching auto-suggest results displayed the subject of the post, making it difficult to differentiate between the suggested results:
Now, auto-suggested results provide more detailed information, including a text snippet, number of replies the post has received, creation date, and board name.
Note: Like the previous version of this experience, it is Responsive-friendly and will truncate and re-layout information based on the size format and available
Additionally, the displayed metadata for each result (text snippet, number of replies, date of last activity, and board name) adjusts according to the width of the search bar. So long as the width is at least 800 pixels, all metadata content displays in full.
Create different SEO titles and descriptions for each variant of a custom page
When you want to create a community page that’s different from one of our pre-defined templates/quilts, you can create a custom page. Additionally, you can edit the text keys to define the title and description of this page to aid in SEO.
Previously, when you created a custom page that used variables to display content for different versions of the page, each version used the same title and description. (For example, when your custom page contains posts filtered by label-names that exist in your community).
Starting with 18.10, you can define different titles and descriptions for each version of the page, which in turn, can improve SEO for these pages. For example, you can use label names to set a specific SEO title and description for each variant of a custom page.
To create different titles/descriptions for each variant of a custom page:
- Go to Studio > Advanced > Page Initialization.
- In the Content field for the Page Initialization script, add this FreeMarker snippet:
<#if page.name == "TestCustomPage">
<#assign pageIdVariant = webuisupport.path.rawParameters.name.get("label-name","")>
<#if pageIdVariant?length gt 0>
${page.content.head.setTitle(text.format("page.TestCustomPage." + pageIdVariant + ".title"))}
${page.content.head.setDescription(text.format("page.TestCustomPage." + pageIdVariant + ".desc"))}
</#if>
</#if>
where label-name is the path parameter used for the custom page - Click Save.
- In Studio > Text Editor > Custom Text, add the following keys (2 keys per page variant):
page.TestCustomPage.label1.title = The Title of the page is label1
page.TestCustomPage.label1.desc = The description of the page is label1
page.TestCustomPage.label2.title = The Title of the page is label2
page.TestCustomPage.label2.desc = The description of the page is label2
where label1 and label2 are different labels on the community.
We have added new FreeMarker methods on the page and webuisupport context objects. See FreeMarker updates for more details.
Configure the number of email escalations allowed per topic/post
Lithium supports three ways to escalate a topic/post:
- Salesforce case
- Salesforce Knowledge Article
Customers using CRM connectors (Salesforce or Microsoft Dynamics) can now configure (via a Support ticket) the number of times a topic/post can be escalated by email. Because Lithium doesn’t dictate how companies follow-up on escalations, increasing the number of times users can escalate a topic can help users drive the follow-up, in case they haven’t heard back or continue to have a problem/question. If you wish to allow escalations via email multiple times for a topic/post, you must open a Support ticket. This configuration option is only available for customers using a CRM connector.
Note: The Salesforce case and knowledge article options are still set to 1.
API Updates
We have made added new methods to the page and webuisupport FreeMarker context objects, and we have added new fields, constraints, and CRUD support to the Messages, Products, and Product_Categories Community API v2 collections.
FreeMarker updates
- webuisupport.path.rawParameters.name.get("<name>", "<default>")
- page.content.head.setTitle("<title>")
- page.content.head.setDescription("<description>")
webuisupport.path.rawParameters.name.get("<name>", "<default>")
Returns the plain text value of the path parameter present in a URL. If the value of the path parameter is notspecified, the method returns the default value as passed to this method. Compare this method to webuisupport.path.parameter.name.get("name"), which returns the specified path parameter as an object.
Tip: Using this new method means that you no longer need to convert the object returned from webuisupport.path.parameters.name.get("name")to a string using webuisupport.path.parameters.name.get("name").text.
For example, in a URL like this:
https://lithosphere.lithium.com/t5/custom/page/page-id/topics-by-label/label-name/mycustompage
the following code snippet would return the value of the label-name path parameter ("mycustompage").
<#assign pageIdVariant = webuisupport.path.rawParameters.name.get("label-name","")/>
page.content.head.setTitle("<title>")
Sets the title for the page in the <title> tag within the <head> element of the page in context. Takes the title parameter as a string.
The following snippet:
${page.content.head.setTitle("Some Page Title")}
would render to:
<title>Some Page Title</title>
page.content.head.setDescription("<description>")
Sets the description in the <meta> tag description attribute for the page in the <head> element. Takes the description parameter as a string.
This code snippet:
${page.content.head.setDescription("some page description")}
would render to:
<meta name="description" content="some page description">
Community API v2 updates
We've made updates to the Message, Product, and Product_Category objects.
Message resource updates
We have added new constraints on the Message resource and support for the following actions using the Community API v2. See Product Association and Product Mention API examples for CRUD examples.
- Post a message with product associations
- Post a message with a product mention
- Post a reply with product associations
- Post a reply with a product mention
- Edit product associations on an existing message
- Remove all product associations from a message
- Add or remove a single product association on an existing message
New Message constraints
- products.id
- products.includes
- product_category.id
- product_category.id
The following constraints enable you to:
- Get messages with a specified product association
SELECT id, subject, view_href FROM messages WHERE products.id = 'sauconyRide10gtx' - Get messages with a specified product association, filtered by product category
SELECT id, view_href, href, subject, body FROM messages WHERE products.id = 'sauconyRide10gtx' AND product_category.id = 'runningShoes' AND product_category.depth <= 0 AND products.includes = true -
Return messages filtered by the specified product category
SELECT id, view_href, href, subject, body FROM messages WHERE product_category.id = 'runningShoes' AND product_category.depth <= 0 AND products.includes = true -
Return messages associated with product categories and child categories up to three levels deep
SELECT id, view_href, href, subject, body FROM messages WHERE products.id = 'sauconyRide10gtx' AND product_category.id = 'runningShoes' AND product_category.depth <= 3 AND products.includes = true
Product resource updates
New Product fields
- status - The status of the product in the product catalog (active or inactive). Inactive status is the equivalent to a soft delete. Inactive status is set on a product if a product previously included in the product catalog is no longer included in the import XML file or when a product is deleted in Community Admin. You cannot set or edit a product status as inactive via the Community API at this time. Inactive products are returned in LiQL queries only when they are requested specifically in the WHERE clause. See the Constraints section for an example.
New Product constraints
- status
- tag_scope.board.id
- tag_scope.category.id
- tag_scope.community.id
- tag_scope.conversation.id
- tag_scope.message.id
The following constraints enable you to:
- Filter products by status (active or inactive)
SELECT id FROM products WHERE status = 'inactive' - Return products mentioned in or associated with messages scoped to the message, conversation, board, category, or community level
SELECT * FROM products WHERE tag_scope.board.id = 'runningShoes'
SELECT * FROM products WHERE tag_scope.category.id = 'womensShoes'
SELECT * FROM products WHERE tag_scope.community.id = 'lithium'
SELECT * FROM products WHERE tag_scope.conversation.id = '572'
SELECT * FROM products WHERE tag_scope.message.id = '81'
Product_Category resource updates
New Product_Category fields
- status - The status of the product category in the product catalog (active or inactive). Inactive status is the equivalent to a soft delete. Inactive status is set on a product category if a product category previously included in the product catalog is no longer included in the import XML file or when a product category is deleted in Community Admin. You cannot set or edit a product category status as inactive via the Community API. Inactive product categories are returned in LiQL queries only when they are requested specifically in the WHERE clause. See the Constraints section for an example.
New Product_Category constraints
- status
The new constraint enables you to:
- Return inactive product categories
SELECT id FROM product_categories WHERE status = 'inactive'
You Found It. We Fixed It.
- Text properties editable in Studio now support UTF-8 characters. UTF-8 is a compromise character encoding that can be as compact as ASCII (if the file is just plain English text) but can also contain Unicode characters (with some increase in file size). UTF stands for Unicode Transformation Format. The “8” means it uses 8-bit blocks to represent a character. The number of blocks needed to represent a character varies from 1 to 4. Learn more about UTF8.
Note: If you have a Unicode character in an English text properties file (text.en.properties and text.en_gb.properties), use the Unicode representation of the character.
For example instead of the following:
header.nav.Japanese = 日本語フォーラム
use this:
header.nav.Japanese = \u65e5\u672c\u8a9e\u30d5\u30a9\u30fc\u30e9\u30e0 - We have reduced the time to save skin changes in Studio made in the Wrapper tab. The time to save changes is now around 5-10 seconds.
- The Community API v1 and v2, and FreeMarker context objects like env.context.message now return anchors appended with the correct domain
- Adding “//” after the domain name in the URL will no longer cause redirects from links/breadcrumbs on the page. It will instead redirect to a “404-Page Not Found” Page. This is to avoid phishing attacks and make the application more secure. Please note that “//” added to the end of the community URL or any URL while using the application is not and cannot be controlled in any way, and it doesn’t lead to any phishing attack scenario and the application is not vulnerable.
- Components, endpoints, and macros that have no displayable content can now be saved as expected again in Studio.
- You can now use object tag in the HTML tab of the editor to view the PDF embedded in a message. Example :
- The focus now comes back to the Upload Photo button in the TinyMCE toolbar when the photo uploader is dismissed by selecting either the Close button or Esc.
- The Date display format field in the Community Admin > System > Date and Time tab, used to define how dates are displayed and validated in the system, no longer restricts the format to three options selected from a drop-down list. Now, users can enter any date format they like, as long as the format the Java's SimpleDateFormat syntax. These format characters are not allowed: a H k K h m s S (hours, minutes, seconds, milliseconds, AM/PM). Note that this field does not affect time display settings. Time display format is controlled by the Time display format field in the same tab.
Documentation Eratta
The current tooltip for the Front page welcome text field in Community Admin > Content > Announcement page is misleading. The field is used by the Welcome component (common.widget.welcome ) and the Featured Content component (community.widget.featured-content). The text of these components can be scoped to the Community, Category, and Board-level. While the two components use the same field for content, the components use different styling. We will be updating this tooltip and in the component documentation in the next release