/o//commerce-media/accounts/-1/images/18601054?download=true
Liferay CE JS Portlet Extender
DXP App
The JS Portlet Extender serves as a bridge between traditional portlet
development and modern front-end development, letting you create
projects with pure JavaScript tooling (npm, gulp, etc.), while still
deploying them as portlets in your Liferay CE instance.
In JS Portlet Extender 7.2, this app is installed by default and updated through Liferay DXP Fix Packs and Liferay Portal CE GA releases. Using Liferay Marketplace to update the app on JS Portlet Extender 7.2 will cause an error.
In JS Portlet Extender 7.2, this app is installed by default and updated through Liferay DXP Fix Packs and Liferay Portal CE GA releases. Using Liferay Marketplace to update the app on JS Portlet Extender 7.2 will cause an error.
DEVELOPER
حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing: ==> publisePages.items [in template "3192443#3192485#null" at line 36, column 38] ---- 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 publisePage = publisePages.items [in template "3192443#3192485#null" at line 36, column 17] ----
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")
27 productSpecifications = product.productSpecifications![]
28 catalogName=product.catalogName
29/>
30
31<#if catalogName?has_content>
32 <#assign publisePages=restClient.get("/c/publisherdetailses?filter=publisherName eq '${catalogName}'" ) />
33 <#assign redirectPath="https://marketplace.liferay.com/e/publisher-details/29282497"/>
34
35 <#if publisePages?has_content>
36 <#assign publisePage=publisePages.items />
37 <#if publisePage?has_content>
38 <#assign publisherDetail=publisePage[0]/>
39 </#if>
40 </#if>
41</#if>
42
43<div>
44 <#if productSpecifications?has_content>
45 <#assign developerNames = productSpecifications?filter(item -> stringUtil.equals(item.specificationKey, "developer-name")) />
46
47 <#if developerNames?has_content>
48 <#list developerNames as developerName>
49 <#if publisherDetail?has_content>
50 <a class="bg-neutral-8" href="${redirectPath}/${publisherDetail.id}">
51 ${developerName.value}
52 </a>
53 <#else>
54 <a class="bg-neutral-8" href="/?developer-name=${developerName.value}">
55 ${developerName.value}
56 </a>
57 </#if>
58 </#list>
59 </#if>
60 </#if>
61</div>
DEVELOPER
٢١/١١/٢٤ ٠٦:٣٣ م
Published date
٢١/١١/٢٤ ٠٦:٣٣ م
Published Date
٢١/١١/٢٤ ٠٦:٣٣ م
SUPPORTED OFFERINGS
Liferay PaaS
Supported Versions
7.1
Resource Requirements
Edition
CE
PRICE
Free
help & support
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.