Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> image  [in template "20101#20128#195325" at line 25, column 10]

----
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: #if image.getData()?has_content  [in template "20101#20128#195325" at line 25, column 5]
----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
2<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
3<#assign JournalContentSearchLocalService = serviceLocator.findService("com.liferay.journal.service.JournalContentSearchLocalService") /> 
4<#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
6<#assign colorId = themeDisplay.getColorSchemeId() /> 
7 
8<#assign universeUrl = "" /> 
9<#assign universeName = "" /> 
10<#assign thematicUrl = "" /> 
11<#assign thematicName = "" /> 
12<#assign currentArticleUrl = "" /> 
13<#assign isArticle = false /> 
14<#assign breadcrumbLevel = 1 /> 
15 
16<article class="article"> 
17    <section class="article__history-back"> 
18        <div class="container"> 
19            <a class="waves-effect btn btn-flat text-grey-darken-4-i rounded-pill my-1" href="javascript:history.back();"><span class="d-flex align-items-center justify-content-center"><i class="icon-cardif-angle-left text-100 pr-2 lh-150"></i><span>Retour</span></span></a> 
20        </div> 
21    </section> 
22     
23    <#assign imageUrl = "" /> 
24    <#assign imageOverlay = "" /> 
25    <#if image.getData()?has_content> 
26        <#assign imageUrl = image.getData() /> 
27        <#if image.overlay?? && image.overlay.getData()?has_content> 
28            <#assign imageOverlay = image.overlay.getData() /> 
29        </#if> 
30    </#if> 
31    <section class="article__illustration banner-header bg-lazy ${imageOverlay} floating-ctas-trigger " data-src="${imageUrl}"> 
32        <div class="container"> 
33            <div class="row d-flex justify-content-center"> 
34                <div class="col-lg-8"> 
35                    <h1 class="text-center m-0 pt-5 pb-3">${.vars['reserved-article-title'].data}</h1> 
36                </div> 
37            </div> 
38        </div> 
39    </section> 
40     
41    <!--Main Content--> 
42    <section id="article-content" class="article__content mt-1 mt-md-n10 text-light"> 
43        <div class="container"> 
44            <div class="row d-flex justify-content-center"> 
45                <div class="col-lg-10 px-3 px-lg-9 py-5 bg-white rounded-top"> 
46                    <#assign displayDate = .vars['reserved-article-display-date'].data> 
47                    <#assign modifiedDate = .vars['reserved-article-modified-date'].data> 
48                    <#-- Save the original page locale for later --> 
49                    <#assign originalLocale = locale> 
50                     
51                    <#-- Set the page locale to the portals default locale --> 
52                    <#setting locale = localeUtil.getDefault()> 
53                     
54                    <#-- Parse the date to a date object --> 
55                    <#assign publishedDate = displayDate?date("EEE, d MMM yyyy")> 
56                    <#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss")> 
57					<#assign modifiedDate = modifiedDate?datetime("EEE, d MMM yyyy HH:mm:ss")> 
58                     
59                    <#-- Set the page locale back to the original page locale --> 
60                    <#assign locale = originalLocale> 
61 
62                    <#if publishedDate?? > 
63                        <time class="published-date text-80 d-block mb-3" datetime="${dateUtil.getDate(publishedDate, "yyyy-MM-dd", locale)}">Publié le ${dateUtil.getDate(publishedDate, "dd MMMM yyyy", locale)} </time> 
64                    </#if> 
65                     
66                    <#if intro.getData()?has_content> 
67                        <p class="intro text-grey-lighten-1 text-120 text-normal mb-5"> 
68                            ${intro.getData()} 
69                        </p> 
70                    </#if> 
71                    ${description.getData()} 
72                     
73                    <#-- campaign banner --> 
74                    <#if campaign.getData()?has_content> 
75                        <div class="article__banner-campaign"> 
76							<#assign bannerContent = "" /> 
77                    	    <#assign bannerContentId = "" /> 
78                    	     
79                    	    <#assign bannerContent = JournalArticleLocalService.getArticleByUrlTitle(groupId, campaign.getData()) /> 
80                    	    <#if bannerContent??> 
81                                <#assign bannerContentId = bannerContent.getArticleId() /> 
82                            </#if> 
83                             
84                            <#if bannerContentId??> 
85                                <#assign bannerContent = journalContentUtil.getContent(groupId, bannerContentId, viewMode, localeUtil.getDefault(), themeDisplay) /> 
86                                ${bannerContent} 
87                            </#if> 
88                    	</div> 
89                    </#if> 
90                    <#-- bloc contact expert --> 
91					<section class="bloc contact expert"> 
92						<#if colorId == "04"> 
93							<#assign blocInformatifId = JournalArticleLocalService.getArticleByUrlTitle(groupId, 'bloc-en-savoir-plus').getArticleId() /> 
94						<#elseif colorId == "03"> 
95							<#assign blocInformatifId = JournalArticleLocalService.getArticleByUrlTitle(groupId, 'bloc-en-savoir-plus-epargne').getArticleId() /> 
96						</#if> 
97						 
98						<#if blocInformatifId??> 
99							<#assign blocInformatif = journalContentUtil.getContent(groupId, blocInformatifId, viewMode, localeUtil.getDefault(), themeDisplay) /> 
100							${blocInformatif} 
101						</#if>	 
102					</section> 
103                     
104                    <!-- Social network --> 
105                    <div id="article_share" class="bg-grey-lighten-5 d-flex flex-column flex-md-row align-items-center justify-content-between mt-5"> 
106                        <div id="total_count" class="px-3 py-2 py-md-0"> 
107                            <span class="icon-cardif-share align-middle"> 
108                                <!--picto--> 
109                            </span> 
110                            &nbsp; 
111                            <span class="article_share-title"> 
112                                Je partage cet article 
113                            </span> 
114                        </div> 
115                        <div id="social_networks"></div> 
116                    </div> 
117                </div> 
118            </div> 
119        </div> 
120    </section> 
121     
122    <#-- Push contents --> 
123    <#if promotion.getSiblings()?has_content> 
124        <section class="article__push-forward"> 
125        	<#list promotion.getSiblings() as cur_promotion> 
126        	    <#if cur_promotion.getData()?has_content> 
127            	    <#assign pushContent = "" /> 
128            	    <#assign pushContentId = "" /> 
129            	     
130            	    <#assign pushContent = JournalArticleLocalService.getArticleByUrlTitle(groupId, cur_promotion.getData()) /> 
131            	    <#if pushContent??> 
132                        <#assign pushContentId = pushContent.getArticleId() /> 
133                    </#if> 
134                     
135                    <#if pushContentId??> 
136                        <#assign pushContent = journalContentUtil.getContent(groupId, pushContentId, viewMode, localeUtil.getDefault(), themeDisplay) /> 
137                        ${pushContent} 
138                    </#if> 
139                </#if> 
140        	</#list> 
141    	</section> 
142    </#if> 
143	 
144	<#-- list categories of an article --> 
145	<#assign journalArticleId = .vars['reserved-article-id'].data> 
146	<#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]> 
147	<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]> 
148	<#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/> 
149	<#assign categoryList = assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) > 
150 
151	<#-- Get vocabulary from category --> 
152	<#assign assetVocabularyLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetVocabularyLocalServiceUtil"]> 
153	<#assign dossierThematiqueId = 0 /> 
154	<#list categoryList as category>			 
155		<#assign vocab = assetVocabularyLocalServiceUtil.getVocabulary(category.getVocabularyId()) /> 
156		<#if vocab.getName()?index_of("Dossier Thématique") != -1> 
157			<#assign dossierThematiqueId = category.getCategoryId() /> 
158		</#if> 
159		<#if "Article" == category.getName()> 
160			<#assign isArticle = true /> 
161		</#if> 
162	</#list> 
163	 
164	<#-- Get Current article URL --> 
165	<#assign currentLayoutIds = JournalContentSearchLocalService.getLayoutIds(groupId, false, journalArticleId) /> 
166	<#if currentLayoutIds?has_content> 
167		<#list currentLayoutIds as layoutId> 
168			<#assign currentArticleLayout = LayoutLocalService.getLayout(groupId, false, layoutId) /> 
169			<#assign currentArticleUrl = currentArticleLayout.getFriendlyURL(locale) /> 
170			<#break /> 
171		</#list> 
172		 
173		<#if currentArticleUrl?index_of("/assurance-emprunteur") == 0> 
174			<#assign universeUrl = "/assurance-emprunteur" /> 
175			<#assign universeName = "Assurance de prêt immobilier" /> 
176			<#assign breadcrumbLevel = 2 /> 
177		<#elseif currentArticleUrl?index_of("/assurance-prevoyance") == 0> 
178			<#assign universeUrl = "/assurance-prevoyance" /> 
179			<#assign universeName = "Prévoyance" /> 
180			<#assign breadcrumbLevel = 2 /> 
181		<#elseif currentArticleUrl?index_of("/placement-epargne") == 0> 
182			<#assign universeUrl = "/placement-epargne" /> 
183			<#assign universeName = "Epargne" /> 
184			<#assign breadcrumbLevel = 2 /> 
185		<#elseif currentArticleUrl?index_of("/epargne-retraite") == 0> 
186			<#assign universeUrl = "/epargne-retraite" /> 
187			<#assign universeName = "Retraite" /> 
188			<#assign breadcrumbLevel = 2 /> 
189		</#if> 
190	</#if> 
191	 
192	<#if dossierThematiqueId != 0> 
193		<!-- list of all similar articles --> 
194		<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery') /> 
195		<#assign search = assetEntryQuery.setOrderByCol1("publishDate") /> 
196		<#assign search = assetEntryQuery.setClassName("com.liferay.journal.model.JournalArticle") /> 
197		<#assign search = assetEntryQuery.setAnyCategoryIds([dossierThematiqueId]) /> 
198		<#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')> 
199		<#assign entries = assetEntryQueryService.getEntries(assetEntryQuery)> 
200		<#assign dossierThematiqueUrl = "" /> 
201	 
202		<#if entries?has_content> 
203			<section class="container my-4" > 
204				<div class="row d-flex justify-content-center"> 
205					<div class="col-lg-10 px-3 px-lg-9"> 
206						<div class="card h-100 m-0 b-0 bl-3 b-primary-i b-solid rounded-bottom py-5"> 
207							<div class="col-lg-12"> 
208								<h3 class="mb-4 text-primary-i"><span class="text-90 text-md-80 text-xl-100">Nos suggestions d'articles</span></h3> 
209							</div> 
210							<ul class="list-styled list-bullet-text-primary"> 
211								<#list entries as entry> 
212									<#assign assetRenderer = entry.getAssetRenderer() /> 
213									<#assign article = assetRenderer.getArticle() /> 
214									<#if journalArticleId != article.getArticleId() >  
215										<#assign entryTitle = assetRenderer.getTitle(locale) /> 
216										<#assign entryCategories = entry.getCategories() />	 
217		 
218										<#assign viewURL = "" /> 
219										<#assign layoutIds = JournalContentSearchLocalService.getLayoutIds(groupId, false, article.getArticleId()) /> 
220										<#if layoutIds?has_content> 
221											<#list layoutIds as layoutId> 
222												<#assign articleLayout = LayoutLocalService.getLayout(groupId, false,	layoutId) /> 
223												<#assign viewURL = articleLayout.getFriendlyURL(locale) /> 
224												<#break /> 
225											</#list> 
226										</#if> 
227										 
228										<#assign isTypeArticle = false /> 
229				 
230										<#if entryCategories?has_content > 
231											<#list entryCategories as category>																				 
232												<#assign subVocab = assetVocabularyLocalServiceUtil.getVocabulary(category.getVocabularyId()) /> 
233												<#if "Particulier Type Article" == subVocab.getName()> 
234													<#assign isTypeArticle = true /> 
235													<#break /> 
236												</#if>	 
237											</#list> 
238										</#if> 
239										 
240										<#if isTypeArticle >									 
241											<li class="mb-1 icon-cardif-hook-right"><a href="${viewURL}" class="text-black-i ho-text-underline fo-text-underline text-decoration-none text-90">${entryTitle}</a></li>	 
242										<#else> 
243											<#assign thematicName = entryTitle /> 
244											<#assign thematicUrl = viewURL /> 
245											<#assign breadcrumbLevel = 3 /> 
246										</#if> 
247									</#if> 
248								</#list> 
249							</ul> 
250							<#if thematicUrl?has_content> 
251								<div class="col-lg-12 pt-2"> 
252									<p class="text-left"> 
253										<a class="btn btn-outline btn-primary w-100 w-md-70 w-xl-30 waves-effect" href="${thematicUrl}">Voir le dossier complet</a> 
254									</p> 
255								</div>	 
256							</#if> 
257						</div> 
258					</div>				 
259				</div> 
260			</section> 
261		</#if> 
262	</#if> 
263	 
264	<#-- Floating CTAs --> 
265    <#if floatingCTA.getData()?has_content> 
266        <#assign ctaArticle = JournalArticleLocalService.getArticleByUrlTitle(groupId, floatingCTA.getData()) /> 
267    <#else> 
268		<#if colorId == "02"> 
269    		 <#assign ctaArticle = JournalArticleLocalService.getArticleByUrlTitle(groupId, "floating-cta-assurer-mon-pret") /> 
270    	<#elseif colorId == "03"> 
271    		 <#assign ctaArticle = JournalArticleLocalService.getArticleByUrlTitle(groupId, "floating-cta-epargne") /> 
272    	<#elseif colorId == "04"> 
273    		 <#assign ctaArticle = JournalArticleLocalService.getArticleByUrlTitle(groupId, "floating-cta-retraite") /> 
274    	<#elseif colorId == "05"> 
275    		 <#assign ctaArticle = JournalArticleLocalService.getArticleByUrlTitle(groupId, "floating-cta-prevoyance") /> 
276    	</#if> 
277	</#if> 
278	 
279	<#if ctaArticle??> 
280        <#assign ctaArticleId = ctaArticle.getArticleId() /> 
281    </#if> 
282	 
283    <#if ctaArticleId??> 
284        <section id="article__ctas"> 
285            <#assign ctaArticle = journalContentUtil.getContent(groupId, ctaArticleId, viewMode, localeUtil.getDefault(), themeDisplay) /> 
286            ${ctaArticle} 
287        </section> 
288    </#if>			 
289</article> 
290 
291<!-- image inbenta --> 
292<div class="d-none" id="vignette-article"><img src="${.vars['reserved-article-small-image-url'].data}"></div> 
293 
294<style type="text/css"> 
295    .mat #social_networks .btn {border: transparent; color: #fff !important; } 
296    .mat #social_networks .icon-cardif-linkedin2 {background-color: #326eae;} 
297    .mat #social_networks .icon-cardif-linkedin2:focus, 
298    .mat #social_networks .icon-cardif-linkedin2:hover {background-color: #4887cb;} 
299    .mat #social_networks .icon-cardif-twitter2 {background-color: #52afec;} 
300    .mat #social_networks .icon-cardif-twitter2:focus, 
301    .mat #social_networks .icon-cardif-twitter2:hover {background-color: #80c4f1;} 
302    .mat #social_networks .icon-cardif-facebook2 {background-color: #495fa5;} 
303    .mat #social_networks .icon-cardif-facebook2:focus, 
304    .mat #social_networks .icon-cardif-facebook2:hover {background-color: #667abb;} 
305    .mat #social_networks .icon-cardif-share-mail {background-color: #00965e;} 
306    .mat #social_networks .icon-cardif-share-mail:focus, 
307    .mat #social_networks .icon-cardif-share-mail:hover {background-color: #00c97e;} 
308</style> 
309<script type="text/javascript" data-senna-track='temporary' src="/documents/9413226/9414665/jquery.social-shares.min.js/e3f3a65f-5317-4346-ac45-d62edc31e6c6?t=1660212763761"></script> 
310<script type="text/javascript"> 
311    $(document).ready(function() { 
312    	$("#social_networks").jsSocials({ 
313           shares: ["linkedin", "twitter", "facebook", "email"] 
314       }); 
315    }); 
316</script> 
317<#if isArticle> 
318<script type = "application/ld+json"> 
319
320		"@context": "http://schema.org", 
321		"@type": "Article", 
322		"mainEntityOfPage": { 
323			"@type": "WebPage", 
324			"@id": "${themeDisplay.getPortalURL()}${currentArticleUrl}" 
325		}, 
326		"headline": "${htmlUtil.escape(htmlUtil.stripHtml(.vars['reserved-article-title'].data))}", 
327		"image": { 
328			"@type": "ImageObject", 
329			"url": "${themeDisplay.getPortalURL()}${imageUrl}", 
330			"height": 1600, 
331			"width": 400 
332		}, 
333		"datePublished": "${displayDate?iso_local}", 
334		"dateModified": "${modifiedDate?iso_local}", 
335		"author": { 
336			"@type": "Organization", 
337			"name": "Cardif France" 
338		}, 
339		"speakable": { 
340			"@type": "SpeakableSpecification", 
341			"cssSelector": ["#article-title", "#article-content"] 
342		}, 
343		"publisher": { 
344			"@type": "Organization", 
345			"name": "Cardif France", 
346			"logo": { 
347				"@type": "ImageObject", 
348				"url": "${themeDisplay.getPortalURL()}/documents/420686/420898/cardif-logo.png/7a9c3746-d39e-410d-a0d3-b99d154cc6ee?t=1579797861659", 
349				"width": 160, 
350				"height": 42 
351
352		}, 
353		"description": "${htmlUtil.escape(htmlUtil.stripHtml(intro.getData()))}", 
354		"articleBody": "${htmlUtil.escape(htmlUtil.stripHtml(description.getData()))}" 
355
356</script> 
357</#if> 
358 
359<script type="application/ld+json"> 
360
361	"@context": "https://schema.org", 
362  	"@type": "BreadcrumbList", 
363  	"itemListElement": [ 
364	  	<#if breadcrumbLevel gt 1> 
365
366		    "@type": "ListItem", 
367		    "position": 1, 
368		    "name": "${htmlUtil.escape(htmlUtil.stripHtml(universeName))}", 
369		    "item": "${themeDisplay.getPortalURL()}${universeUrl}" 
370	  	}, 
371	  	</#if> 
372	  	<#if breadcrumbLevel gt 2> 
373
374		    "@type": "ListItem", 
375		    "position": 2, 
376		    "name": "${htmlUtil.escape(htmlUtil.stripHtml(thematicName))}", 
377		    "item": "${themeDisplay.getPortalURL()}${thematicUrl}" 
378	  	}, 
379	  	</#if> 
380
381		    "@type": "ListItem", 
382		    "position": ${breadcrumbLevel}, 
383		    "name": "${htmlUtil.escape(htmlUtil.stripHtml(.vars['reserved-article-title'].data))}", 
384		    "item": "${themeDisplay.getPortalURL()}${currentArticleUrl}" 
385
386
387
388</script>