An error occurred while processing the template.
Java method "it.dvel.rcf.profile.integration.model.impl.ProductImpl.getLineTitle(Locale)" threw an exception when invoked on it.dvel.rcf.profile.integration.model.impl.ProductImpl object "{uuid=fc31c824-f045-7f39-391f-95d9fd21e736, productId=630, companyId=20101, groupId=20128, userId=20130, userName=Eighty Twenty, createDate=2021-11-02 15:31:16.0, modifiedDate=2024-10-08 16:43:00.395, code=STP0276, productTypeName=Passive/PA Speakers, name=DP 1420EN, nameSearchable=DP1420EN, urlTitle=dp-1420en, subtitle=<?xml version='1.0' encoding='UTF-8'?><root available-locales=\"en_US,it_IT,es_ES,fr_FR,de_DE\" default-locale=\"en_US\"><Subtitle language-id=\"en_US\">UNIDIRECTIONAL ALUMINIUM SOUND PROJECTOR</Subtitle><Subtitle language-id=\"de_DE\">GERICHTETER SOUNDPROJEKTOR AUS ALUMINIUM</Subtitle><Subtitle language-id=\"es_ES\">PROYECTOR UNIDIRECCIONAL DE SONIDO EN ALUMINIO</Subtitle><Subtitle language-id=\"fr_FR\">PROJECTEUR DE SON UNIDIRECTIONNEL EN ALUMINIUM</Subtitle><Subtitle language-id=\"it_IT\">PROIETTORE DI SUONO MONODIREZIONALE IN ALLUMINIO</Subtitle></root>, description=<?xml version='1.0' encoding='UTF-8'?><root available-locales=\"en_US,it_IT,es_ES,fr_FR,de_DE\" default-locale=\"en_US\"><Description language-id=\"en_US\">DP 1420EN is a unidirectional sound projector featuring an elegant aesthetic and easy installation, suitable for the sonorization of commercial and industrial environments where a good sound quality and high intelligibility and efficiency are required. It features a aluminium cylindrical  body, grille and bracket. Ground screw available (if needed). Thanks to its IP66 protection grade, it can be installed both indoor and outdoor.</Description><Description language-id=\"de_DE\">Der DP 1420EN ist ein gerichteter Soundprojektor mit eleganter Optik, der sich einfach installieren lässt und in gewerblichen und industriellen Umgebungen eine hervorragende Klangqualität, hohe Sprachverständlichkeit und Effizienz gewährleistet. Das zylindrische Gehäuse, das Frontgitter und die Halterung bestehen aus Aluminium. Erdungsschraube vorhanden (falls benötigt). Der Lautsprecher entspricht dem Schutzgrad IP66 und kann sowohl in Innenräumen als auch in Außenbereichen installiert werden.</Description><Description language-id=\"es_ES\">El modelo DP 1420EN es un proyector unidireccional de sonido con un diseño elegante y de fácil instalación, ideal para la sonorización de entornos comerciales e industriales que requieran una buena calidad de sonido, gran inteligibilidad y eficiencia. Cuenta con una carcasa cilíndrica de aluminio, rejilla y soporte. Tornillo de tierra disponible (si fuera necesario). Su grado de protección IP66 permite su instalación tanto en interiores como en exteriores.</Description><Description language-id=\"fr_FR\">Le DP 1420EN est un projecteur de son unidirectionnel à l'esthétique élégante et facile à installer. Il est adapté à la sonorisation d'environnements commerciaux et industriels où une bonne qualité sonore, ainsi qu'une intelligibilité et une efficacité élevées sont requises. Il comporte un boîtier cylindrique, une grille et un support en aluminium. Vis de masse disponible (si nécessaire). Grâce à son indice de protection IP66 il peut être installé à l’intérieur comme en plein air.</Description><Description language-id=\"it_IT\">DP 1420EN è un proiettore di suono monodirezionale che si contraddistingue per l’estetica elegante e la facilità di installazione, ed è adatto alla sonorizzazione di ambienti commerciali e industriali ove sia richiesta una buona qualità di riproduzione associata ad elevate intelligibilità ed efficienza. Costituito da un robusto corpo cilindrico, griglia e staffa per il fissaggio in alluminio. Vite di messa a terra disponibile (se richiesto l'utilizzo). Adatto all'installazione sia indoor che outdoor grazie al grado di protezione IP66.</Description></root>, type=PRODOTTO, accessoryTypeCode=, publication=RCF, ratio=100, readMoreURL=, youTubeVideos=, youTubeURL=, active=true}"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${relatedProduct.getLineTitle(locale)}  [in template "20101#20128#819037" at line 171, column 73]
----
1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
2<#assign journalArticleId = .vars['reserved-article-id'].data> 
3<#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]> 
4<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]> 
5<#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/> 
6<#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) > 
7<#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
8<#assign parentLayout = LayoutLocalService.getLayout(layout.getAncestorPlid()) /> 
9<#assign parentLayoutUrl = parentLayout.getFriendlyURL(locale) /> 
10<#assign journalArticle = journalArticleLocalService.getLatestArticle(scopeGroupId, journalArticleId) /> 
11<#assign relatedArticles = rcfTemplateHelper.getRelatedAssets(journalArticle, 'com.liferay.journal.model.JournalArticle', 'News Liferay 6.2') /> 
12<#assign relatedProducts = rcfTemplateHelper.getRelatedAssets(journalArticle, 'it.dvel.rcf.profile.integration.model.Product', '') /> 
13 
14<div class="news-detail"> 
15	<div class="bg-white pb-5"> 
16		<div class="py-4 px-2 bg-lighter mb-7 to-back"> 
17			<div class="container-fluid container-fluid-max-xl"> 
18				<a href="javascript: window.history.back();" class="d-flex align-items-center"> 
19					<i class="icon-arrow-right-custom"></i> 
20					<span class="pl-3"><@liferay.language key="back" /></span> 
21				</a> 
22			</div> 
23		</div> 
24		<div class="container-fluid container-fluid-max-xl px-4"> 
25			<div class="mb-2"> 
26				<span class="font-weight-medium category mr-3"> 
27					<#list categoryList as category> 
28						<span class="pr-3">${category.getName()}</span> 
29					</#list> 
30				</span> 
31				<span class="date"> 
32					<#setting time_zone = languageUtil.get(locale, "template-timezone") />  
33					<#assign originalLocale = locale />  
34					<#setting locale = localeUtil.getDefault() /> 
35					<#assign displaydate = .vars['reserved-article-display-date'].data> 
36					<#assign displaydate = displaydate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
37					<#setting locale = originalLocale />  
38					${displaydate?string["dd MMM yyyy"]} 
39				</span> 
40			</div> 
41			 
42			<#if (FieldsGroup52652497.Text78515013.getData())??> 
43				<h1 class="mb-4 font-family-narrow-normal px-0">${FieldsGroup52652497.Text78515013.getData()}</h1> 
44			</#if> 
45			 
46			<#if FieldsGroup52652497.Upload45315688.getSiblings()?has_content> 
47				<div class="mb-6"> 
48					<div class="owl-carousel owl-theme" id="owl-carousel-hp"> 
49						<#list FieldsGroup52652497.Upload45315688.getSiblings() as cur_FieldsGroup52652497_Upload45315688> 
50							<div class="slide d-flex align-items-center justify-content-center" style="background-image:url(${cur_FieldsGroup52652497_Upload45315688.getData()})"> 
51							</div> 
52						</#list> 
53					</div> 
54				</div> 
55				<div class="d-none"> 
56					<#list FieldsGroup52652497.Upload45315688.getSiblings() as cur_FieldsGroup52652497_Upload45315688> 
57							<img src="${cur_FieldsGroup52652497_Upload45315688.getData()}" /> 
58						</#list> 
59				</div> 
60			</#if> 
61			 
62			 
63			<div class="d-md-flex align-items-center justify-content-between mb-md-9 mb-5"> 
64				<div class="social h6 mb-0 py-2 pl-2 mb-3 mb-md-0"> 
65					<#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
66					<a href="http://www.linkedin.com/shareArticle?mini=true&url=${currentUrl}&title=${FieldsGroup52652497.Text78515013.getData()}" class="px-2" target="_blank"> 
67						<i class="icon-linkedin-custom px-1"></i> 
68					</a> 
69					<a href="https://www.facebook.com/sharer/sharer.php?u=${currentUrl}" class="px-2" target="_blank"> 
70						<i class="icon-facebook-custom px-1"></i> 
71					</a> 
72					<a href="https://twitter.com/intent/tweet?url=${currentUrl}" class="px-2" target="_blank"> 
73						<i class="icon-twitter-custom px-1"></i> 
74					</a> 
75				</div> 
76			</div> 
77		</div> 
78		<div class="container-fluid container-fluid-max-xl px-md-7 px-lg-9 px-4"> 
79			<#if FieldsGroup52652497.FieldsGroup95339333.getSiblings()?has_content> 
80				<#list FieldsGroup52652497.FieldsGroup95339333.getSiblings() as node> 
81					<div class="mb-md-7 mb-4"> 
82						<#if (FieldsGroup52652497.FieldsGroup95339333.Text94801507.getData())??> 
83							<h6 class="mb-md-6 mb-4">${node.Text94801507.getData()}</h6> 
84						</#if> 
85						<#if (node.RichText63313118.getData())??> 
86							<div class="mb-md-7 mb-4 paragraph font-family-narrow-normal"> 
87								${node.RichText63313118.getData()} 
88							</div> 
89						</#if> 
90						<#if (node.RichText45781737.getData())??> 
91							<div class="row mb-md-7 mb-4"> 
92								<#if (node.Image42436245.getData())?? && node.Image42436245.getData() != ""> 
93									<div class="col-md-8 mb-4 mb-md-0"> 
94										<img alt="${node.Image42436245.getAttribute("alt")}" data-fileentryid="${node.Image42436245.getAttribute("fileEntryId")}" src="${node.Image42436245.getData()}" class="w-100"/> 
95									</div> 
96									<#if (node.RichText45781737.getData())?? && node.RichText45781737.getData() != ""> 
97										<div class="col-md-4 font-family-narrow-normal"> 
98											${node.RichText45781737.getData()} 
99										</div> 
100									</#if> 
101								<#else> 
102									<#if (node.RichText45781737.getData())?? && node.RichText45781737.getData() != ""> 
103										<div class="col-md-12 font-family-narrow-normal"> 
104											${node.RichText45781737.getData()} 
105										</div> 
106									</#if> 
107								</#if> 
108							</div> 
109						</#if> 
110						<#if (node.Text34883111.getData())?? && node.Text34883111.getData() != ""> 
111							<div class="blockquote font-family-narrow-normal position-relative mb-7"> 
112								${node.Text34883111.getData()} 
113							</div> 
114						</#if> 
115					</div> 
116				</#list> 
117			</#if> 
118			<#if FieldsGroup52652497.FieldsGroup17972647.getData() !=''> 
119				<div class="mb-md-7 mb-4"> 
120					<#list FieldsGroup52652497.FieldsGroup17972647.getSiblings() as node> 
121						<div class="mb-2"> 
122							<#if (node.Text21652173.getData())??> 
123								<a target="_blank" href="${node.Text21652173.getData()}" class="d-flex align-items-center font-family-narrow-normal"> 
124									<i class="icon-download-custom mr-3 h5 font-weight-normal mb-0"></i> 
125									<#if node.Text31160069.getData() !=''> 
126										${node.Text31160069.getData()} 
127									<#else> 
128										<@liferay.language key="download" /> 
129									</#if> 
130								</a> 
131							</#if> 
132						</div> 
133					</#list> 
134				</div> 
135			</#if>	 
136		</div> 
137	</div> 
138	 
139	<#if relatedProducts?has_content> 
140	<div class="bg-lighter"> 
141	<div class="container-fluid container-fluid-max-xl pt-7 pb-8 px-4"> 
142			<h5 class="font-weight-normal mb-5 text-center secondary"><@liferay.language key="related-products" /></h5> 
143			<div class="owl-carousel owl-theme" id="owl-carousel-rel-prod"> 
144				<#list relatedProducts as relatedProduct> 
145				<#assign productFeatures = relatedProduct.getProductFeatures(true) /> 
146				<#assign productBadges2 = relatedProduct.getBadges(2) /> 
147				<#assign productBadges1 = relatedProduct.getBadges(1) /> 
148				 
149					<div class="related-news related-prod mb-4 mb-md-0 h-100"> 
150						<div class="bg-white h-100 p-5 position-relative rounded-sm d-flex flex-column"> 
151							<#if productBadges2?has_content> 
152								<#assign productStatusStyle = productBadges2[0].getBackColor() /> 
153								<div class="status px-4 mb-5 pt-3" style="border-color:${productStatusStyle}!important"> 
154									<#list productBadges2 as productBadge2> 
155										<div class="border-0 badge" style="color: ${productBadge2.getBackColor()}">${productBadge2.getCode()}</div> 
156									</#list> 
157								</div> 
158							</#if> 
159							<div class="image d-flex align-items-end mb-5">							 
160								<a data-senna-off="true" href="${portal.getLayoutFullURL(relatedProduct.getFirstAvailableLayout(rcfCurrentPublication), themeDisplay)}" class="d-flex align-items-center justify-content-center"> 
161									<img src="${relatedProduct.getFirstAvailableCoverImageURL(rcfCurrentPublication, themeDisplay)}" class="w-100" /> 
162								</a> 
163							</div> 
164							<div class="status normal mb-4 pt-3"> 
165									<#list productBadges1 as productBadge1> 
166										<div class="border-0 badge" style="background-color: ${productBadge1.getBackColor()}; color: ${productBadge1.getFontColor()};">${productBadge1.getCode()}</div> 
167									</#list> 
168							</div> 
169							<div class="mb-4"> 
170								<div class="meta font-weight-medium underline mb-3"> 
171									${relatedProduct.getLineTitle(locale)} 
172								</div> 
173								<h4 class="font-weight-medium mb-3 text-uppercase">${relatedProduct.name}</h4> 
174								<p class="mb-3 font-weight-medium text-uppercase">${relatedProduct.getSubtitle(locale)}</p> 
175								<small class="mb-3 font-family-narrow-normal d-block"> 
176									<ul class="mb-5 font-family-narrow-normal px-0"> 
177										<#list productFeatures as productFeature> 
178											<li>${productFeature.getTitle(locale)} 
179										</#list> 
180									</ul> 
181								</small> 
182							</div> 
183							<div class="mt-auto"> 
184								<#if relatedProduct.hasLayout(rcfCurrentPublication)> 
185									<a data-senna-off="true" href="${portal.getLayoutFullURL(relatedProduct.getFirstAvailableLayout(rcfCurrentPublication), themeDisplay)}" class="btn btn-link-normal"> 
186										<@liferay.language key="learn-more" /> 
187									</a> 
188								</#if> 
189							</div> 
190							</div> 
191					</div> 
192				</#list> 
193			</div> 
194		</div> 
195		</div> 
196		</#if> 
197 
198	<#if relatedArticles?has_content> 
199		<div class="container-fluid container-fluid-max-xl pt-8 pb-4 px-4"> 
200			<h5 class="font-weight-normal mb-5 text-center"><@liferay.language key="other" /> <@liferay.language key="news" /></h5> 
201			<div class="row pt-7"> 
202				<#list relatedArticles as relatedArticle> 
203						<#assign categoryListEntry=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",relatedArticle.resourcePrimKey) > 
204						<#assign imageURL = rcfTemplateHelper.getJournalArticleField(relatedArticle, locale, 'FieldsGroup52652497.Upload45315688', 'url') /> 
205						<#assign title = rcfTemplateHelper.getJournalArticleField(relatedArticle, locale, 'FieldsGroup52652497.Text78515013') /> 
206						<#assign entryTitle = relatedArticle.getTitle(locale) /> 
207						<#if validator.isNull(title)>  
208							<#assign title = entryTitle />  
209						</#if>  
210						<#assign summary = relatedArticle.getDescription(locale) /> 
211						<#assign text = rcfTemplateHelper.getJournalArticleField(relatedArticle, locale, 'FieldsGroup52652497.FieldsGroup95339333.RichText63313118') /> 
212						<#if validator.isNull(summary)>  
213							<#assign summary = text />  
214						</#if>  
215						<div class="col-md-6 related-news mb-5"> 
216							<div class="bg-white h-100"> 
217								<div class="image bg-secondary" style="background-image:url(${imageURL})"> 
218								</div> 
219								<div class="p-5 pb-8"> 
220									<div class="meta"> 
221												<span class="font-weight-medium pr-3 text-uppercase"> 
222													<#list categoryListEntry as category> 
223														${category.getName()} 
224													</#list> 
225												</span> 
226												<span> 
227														${relatedArticle.createDate?string["dd MMM yyyy"]} 
228												</span> 
229									</div> 
230									<h6 class="font-weight-medium mb-3"> 
231										${title} 
232									</h6> 
233									<small class="mb-5 font-family-narrow-normal d-block">${stringUtil.shorten(htmlUtil.stripHtml(summary), 250)}</small> 
234									<a href="/-/${relatedArticle.urlTitle}" class="btn btn-link-normal"> 
235										<@liferay.language key="learn-more" /> 
236									</a> 
237								</div> 
238							</div> 
239						</div> 
240				</#list> 
241			</div> 
242		</div> 
243	</#if> 
244</div> 
245<script> 
246	var owl = $("#owl-carousel-hp").owlCarousel({ 
247		loop:true, 
248    nav:false, 
249		dots:true, 
250		items:1 
251	}); 
252	$("#owl-carousel-rel-prod").owlCarousel({ 
253	    margin:20, 
254	    nav:false, 
255			dots:true, 
256			items:3, 
257			responsive : { 
258				0 : { 
259						items:1 
260				}, 
261				768 : { 
262						items:2 
263				}, 
264				1000 : { 
265						items:3 
266
267
268	}); 
269</script> 
270<style> 
271 
272	@media only screen and (min-width: 600px) and (max-width: 768px){ 
273		.news-detail #owl-carousel-hp .slide { 
274			height:400px 
275
276
277	@media only screen and (max-width: 600px){ 
278		.news-detail #owl-carousel-hp .slide { 
279			height:200px 
280
281
282</style> 
Pulsante Torna su con Immagine
...
Torna su
Follow us on
Icone allineate
Linkedin Facebook X Youtube Instagram Spotufy