Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> productLayout.getLayoutSet [in template "20115#20151#196977" at line 11, column 67] ---- 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 docsDownloadURL = portalUtil... [in template "20115#20151#196977" at line 11, column 9] ----
1<@leonardo.articleInfo .vars "SP-Product-complete"/>
2<#assign rndNamespace = randomNamespace>
3<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
4
5<#assign jArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) >
6
7<#assign productLayout = (jArticle.getLayout()!)>
8
9<#assign docsDownloadURL = ''>
10<#if (layout.getGroup().getGroupId()) != (jArticle.getGroupId())>
11 <#assign docsDownloadURL = portalUtil.getVirtualHostname (productLayout.getLayoutSet())>
12 <#if (docsDownloadURL)?has_content && (docsDownloadURL?lower_case != 'localhost')>
13 <#assign docsDownloadURL = 'https://' + docsDownloadURL >
14 <#else>
15 <#assign docsDownloadURL = ''>
16 </#if>
17</#if>
18<#assign currentGroupExpandoBridge = themeDisplay.getScopeGroup().getExpandoBridge()>
19<#assign isDarkTheme = false>
20<#if currentGroupExpandoBridge.hasAttribute("dark-theme")>
21 <#assign isDarkTheme = currentGroupExpandoBridge.getAttribute("dark-theme", false)>
22</#if>
23
24<#if isDarkTheme && !(hasDetailPage?? && getterUtil.getBoolean(hasDetailPage.getData())) >
25<#assign scalingDetails = {
26 "desktop": {"alternateImage": {}, "key": "w_317"},
27 "tl": {"alternateImage": SeparatorOverview.OverviewImage.ImageTl!, "key": "w_317"},
28 "tp": {"alternateImage": SeparatorOverview.OverviewImage.ImageTp!, "key": "w_317"},
29 "mobile": {"alternateImage": SeparatorOverview.OverviewImage.ImageM!, "key": "w_317"}
30 }>
31
32
33<#assign dataImg = leonardo.adaptImage(SeparatorOverview.OverviewImage!, scalingDetails )>
34 <div class="product-page-hero-card product-card-modal-container product-base section-hero-card--smallerVersion section-hero-card--wider-page-padding">
35 <div class="product-card-modal">
36 <div class="product-card-modal-text">
37 <div class="modal-title-container">
38 <h1 class="modal-title">
39 ${SeparatorOverview.ProductName.getData()}
40 </h1>
41 </div>
42 <div class="product-card--graphic-container">
43 <img class="product-card--graphic" alt="${SeparatorOverview.ProductName.getData()!}" title="${SeparatorOverview.ProductName.getData()!}" src="${themeDisplay.pathThemeImages}/blank.png"
44 data-src-url-d="${dataImg.desktop!}"
45 data-src-url-tl="${dataImg.tablet_landscape!}"
46 data-src-url-tp="${dataImg.tablet_portrait!}"
47 data-src-url-m="${dataImg.mobile!}"/>
48 </div>
49 <div class="modal-description">
50 ${SeparatorOverview.OverviewText.getData()}
51 </div>
52
53 <#if SeparatorOverview.OverviewFileUrl??>
54 <#assign docsDownloadURL = ''>
55
56 <ul class="js-ul-overview">
57 <#list SeparatorOverview.OverviewFileUrl.getSiblings() as itemList>
58 <#assign file_info = leonardo.findFileEntryInfo(itemList.getData()) >
59 <#if itemList.OverviewFileLabel.getData()!= '' && file_info.downloadUrl != ''>
60 <li class="list-item">
61 <a href="${docsDownloadURL}${file_info.downloadUrl}" target="_blank">
62 ${itemList.OverviewFileLabel.getData()!}
63 </a>
64 </li>
65 </#if>
66 </#list>
67 </ul>
68 </#if>