/o//commerce-media/accounts/-1/images/18564735?download=true

Explicanto
DXP App
Collaboration & Knowledge Sharing
18564687
E-Learning application:
- Online courses management
- TinCan API (Experience Api) ecosystem
- Connection with a Learning Record Store (LRS)
- Course repository (only in the Enterprise Version)

This is a demo version that allows you to run two predefined courses that are stored in our repository so you can get an idea on how it works. After installing the app, go to Control Panel -> Explicanto Configuration -> Demo content and click on the Generate demo button. This will create a new site that contains the two predefined courses and a new user that has the right to manage courses on that site:

/web/explicanto-demo-community
User: explicanto_demo_trainer@liferay.com
Password: 123456

The settings in the Configuration tab are read-only because this version is locked to your course repository and our LRS (an instance on Learning Locker). The enterprise version doesn’t require a separate course repository and allows you to use your LRS of choice.

Don't hesitate to contact us at:
support@explicanto.ro
DEVELOPER
DEVELOPER
24/11/21 18:19
Published date
24/11/21 18:19
Published Date
24/11/21 18:19
SUPPORTED OFFERINGS
Liferay PaaS
Supported Versions
テンプレート処理中にエラーが発生しました。
The following has evaluated to null or missing:
==> channel.items  [in template "3192443#3192485#null" at line 18, column 30]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign channelId = channel.items[0].id  [in template "3192443#3192485#null" at line 18, column 9]
----
1<#if themeDisplay?has_content> 
2	<#assign scopeGroupId = themeDisplay.getScopeGroupId() /> 
3</#if> 
4 
5<#if currentURL?has_content> 
6	<#if currentURL?contains('web')> 
7		<#assign 
8			index = 2 
9			partsUrl = currentURL?split('/') 
10			siteName = partsUrl[index..index]?join('/') 
11		/> 
12	</#if> 
13</#if> 
14 
15<#assign channel = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?accountId=-1&filter=name eq 'Marketplace Channel' and siteGroupId eq '${scopeGroupId}'") /> 
16 
17<#if channel?has_content> 
18	<#assign channelId = channel.items[0].id /> 
19</#if> 
20 
21<#if (CPDefinition_cProductId.getData())??> 
22	<#assign productId = CPDefinition_cProductId.getData() /> 
23</#if> 
24 
25<#assign 
26	product = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/"+ channelId +"/products/"+ productId +"?accountId=-1&nestedFields=productSpecifications&productSpecifications.pageSize=-1") 
27	specifications = product.productSpecifications![] 
28/> 
29 
30<div> 
31	<#if specifications?has_content> 
32		<#assign 
33			liferayVersionSpecification = specifications?filter(item -> stringUtil.equals(item.specificationKey, "liferay-version")) 
34		/> 
35 
36		<#if liferayVersionSpecification?has_content> 
37		 	<#list liferayVersionSpecification as liferayVersion> 
38				<#assign liferayVersionValue = liferayVersion.value /> 
39 
40				<#if liferayVersionValue?has_content> 
41					${liferayVersionValue}<#if liferayVersion?has_next>,</#if> 
42				</#if> 
43		  </#list> 
44		</#if> 
45	</#if> 
46</div> 
Resource Requirements
Edition
CE
PRICE
Free
help & support
SHARE LINK
Copy & Share

HTML Example

A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.