/o//commerce-media/accounts/-1/images/18460641?download=true
Columns 1-4 Layout CE
DXP App
Layout Templates allow you to choose how portlets will be arranged on a
page. They are simple table or CSS-based containers into which portlets
can be dropped and sit within the body of the page. Liferay Portal comes
with several built-in layout templates, but if you require 1-4 column
(25/25/25/25) layout you may wish to use this custom layout template. A
thumbnail is displayed when the end user clicks "Edit Link"
from the Dock bar.
This layout will appear in your Page Layouts once installed.
This layout will appear in your Page Layouts once installed.
DEVELOPER
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing: ==> product.publisherName [in template "3192443#3192485#null" at line 28, column 23] ---- 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: publisherName = product.publisherName [in template "3192443#3192485#null" at line 28, 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")
27 productSpecifications = product.productSpecifications![]
28 publisherName=product.publisherName
29/>
30
31<#if publisherName?has_content>
32 <#assign publisePages=restClient.get("/c/publisherdetailses?filter=catalogName eq '${publisherName}'" ) />
33 <#assign redirectPath="https://marketplace-uat.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
21/11/24 17:45
Published date
21/11/24 17:45
Published Date
21/11/24 17:45
SUPPORTED OFFERINGS
Liferay PaaS, Liferay Self-Hosted
Supported Versions
6.2
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.