Content | DGO | PDP Estático | Header

Content | DGO | PDP Estatico - UEFA Champions League | Banner

حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> Countdown.countdownDate  [in template "20101#20128#248131" at line 16, column 41]

----
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: #if Countdown?? && validator.isNotNul...  [in template "20101#20128#248131" at line 16, column 1]
----
1<#function substituirCaminhoCDN(caminho)> 
2     <#assign indice = caminho?last_index_of("/documents") + 1> 
3     <#assign novoCaminho = caminho?substring(indice)> 
4  
5     <#return themeDisplay.getCDNBaseURL() + "/" + novoCaminho> 
6</#function> 
7 
8<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() /> 
9<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
10<#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
11 
12<#-- has countdown --> 
13<#assign  
14  hasCountDown = 'false' 
15/> 
16<#if Countdown?? && validator.isNotNull(Countdown.countdownDate.getData())> 
17  <#assign hasCountDown = 'true' /> 
18</#if> 
19 
20<style> 
21    .hero__buttons.buttons_active { 
22        display: block; 
23
24    .content_subtitle { 
25        margin-bottom: 23px; 
26        margin-top: 23px; 
27
28     
29    .dtv-landing-title { 
30        font-weight: bold; 
31
32     
33    .hero .hero__content .button__cup_orange { 
34        max-width: 350px; 
35        width: 100%; 
36        border-radius: 25px; 
37
38 
39    .dtvgo .button__cup_orange { 
40        background: #fff !important; 
41        color: #101010 !important; 
42
43 
44    .banner_img{ 
45        background-image: url(${substituirCaminhoCDN(BackgroundImage.Image51x0.getData())}); 
46        background-repeat: ${BackgroundImage.BackgroundRepeat.getData()};  
47        background-position: ${BackgroundImage.BackgroundPosition1.getData()} ${BackgroundImage.BackgroundPosition2.getData()}; 
48
49     
50    @media (min-width: 971px){ 
51        .banner #hero_main_dtv { 
52            background-repeat: no-repeat !important; 
53            background-position: center 18px !important; 
54            background-size: contain !important; 
55
56
57 
58    @media (max-width: 438px) 
59
60        .hero .hero__content .hero__title h1 { 
61            font-size: 40px; 
62
63
64     
65    @media (max-width: 361px) 
66
67        .hero .hero__content .hero__title h1 { 
68            font-size: 30px; 
69            line-height: 36px; 
70
71
72   
73  <#if hasCountDown == 'true'>   
74  /*countdown*/ 
75  .countdown-section { 
76    background-color: #077CC0; 
77    position: absolute; 
78    left: 0; 
79    top: 16px; 
80    z-index: 20; 
81    width: 100%; 
82
83 
84  .text-center { 
85    text-align: center; 
86
87 
88  .counter-div { 
89    display: flex; 
90    flex-direction: row; 
91    gap: 4px; 
92    justify-content: center; 
93    font-size: 0.65rem; 
94    color: #101010; 
95    font-family: "Poppins",sans-serif; 
96    font-weight: 600; 
97
98 
99  .counter-element { 
100    width: fit-content; 
101    display: contents; 
102    flex-direction: column; 
103
104 
105  .number-div { 
106    padding: 12px 0; 
107
108 
109  .element-text { 
110    padding: 12px 0; 
111    margin: 0; 
112    font-weight: 600!important; 
113
114 
115  .counter-animate { 
116    animation: slideInFromTop 0.5s ease-in-out; 
117
118 
119  .show { 
120    opacity: 1; 
121
122   
123  @media screen and (min-width: 350px) { 
124    .counter-div { 
125        font-size: 0.75rem; 
126
127
128 
129  @media screen and (max-width: 600px) { 
130    .counter-div { 
131      gap: 5px; 
132
133 
134    .et-desktop { 
135      display: none; 
136
137
138 
139  @media screen and (min-width: 601px) { 
140    .et-mobile { 
141      display: none; 
142
143
144 
145  @media screen and (max-width: 970px) { 
146    .countdown-section { 
147      top: 16px; 
148
149
150 
151  @media screen and (min-width: 1080px) { 
152    .countdown-section { 
153      top: 18px; 
154
155
156 
157  @keyframes slideInFromTop { 
158    from { 
159      transform: translateY(-80%); 
160      opacity: 0; 
161
162 
163    to { 
164      transform: translateY(0%); 
165      opacity: 1; 
166
167  </#if> 
168</style> 
169 
170<#if (MobileBackgroundImage.Image3vvy.getData())?? && MobileBackgroundImage.Image3vvy.getData() != "">  
171    <style> 
172        @media (max-width: 767px) { 
173            .banner_img { 
174                background-image: url(${substituirCaminhoCDN(MobileBackgroundImage.Image3vvy.getData())}); 
175                background-size: contain; 
176
177
178    </style> 
179    <#else> 
180    <style> 
181        @media (max-width: 767px) { 
182            .banner_img { 
183                background-image: url(''); 
184
185
186    </style> 
187</#if> 
188 
189<#assign notShowContent = 'false' /> 
190 
191<#if currentUrl?contains('/br/') && currentUrl?contains('/inicio')> 
192    <#assign notShowContent = 'true' /> 
193</#if> 
194 
195<#-- countdown GMT rules -> 
196<#-- for AR, UY, BR --> 
197<#assign GMT = '-0300' /> 
198 
199<#if currentUrl?contains('/co/') || currentUrl?contains('/ec/') || currentUrl?contains('/pe/')> 
200  <#assign GMT = '-0500' /> 
201<#elseif currentUrl?contains('/cl/')> 
202  <#assign GMT = '-0400' /> 
203</#if> 
204 
205<div class="banner hero"> 
206    <#if hasCountDown == 'true'> 
207    <!-- countdown --> 
208    <section class="countdown-section" style="display:none"> 
209      <div class="text-center"> 
210        <div id="countDiv" class="counter-div"> 
211          <p class="element-text">Gran Hermano empieza en</p> 
212          <div class="counter-element"> 
213            <div class="number-div"> 
214              <div class="days"></div> 
215            </div> 
216            <p class="element-text">dias,</p> 
217          </div> 
218          <div class="counter-element"> 
219            <div class="number-div"> 
220              <div class="hours"></div> 
221            </div> 
222            <p class="element-text">horas,</p> 
223          </div> 
224          <div class="counter-element"> 
225            <div class="number-div"> 
226              <div class="minutes"></div> 
227            </div> 
228            <p class="element-text et-mobile">min. y</p> 
229            <p class="element-text et-desktop">minutos y</p> 
230          </div> 
231          <div class="counter-element"> 
232            <div class="number-div"> 
233              <div class="seconds"></div> 
234            </div> 
235            <p class="element-text et-mobile">seg.</p> 
236            <p class="element-text et-desktop">segundos!</p> 
237          </div> 
238        </div> 
239      </div> 
240    </section> 
241    <!-- //countdown --> 
242    </#if> 
243     
244    <div id="hero_main_dtv" class="banner_img" data-image="${substituirCaminhoCDN(BackgroundImage.Image51x0.getData())}"> 
245      <div class="hero__content"> 
246       
247        <div class="hero__box content--${GeneralConfiguration.TextBoxPosition.getData()}"> 
248          <div class="hero__title"> 
249              <h1 class="h1 ${Texts.TitleSubtitle.Title.TitleColor.getData()}"> 
250                ${Texts.TitleSubtitle.Title.TitleText.getData()} 
251              </h1> 
252              <h2 class="h4 ${Texts.TitleSubtitle.Subtitle.SubtitleColor.getData()}"> 
253                ${Texts.TitleSubtitle.Subtitle.SubtitleText.getData()} 
254              </h2> 
255          </div> 
256 
257          <div class="hero__block"> 
258           
259            <#if TextPlans.PlanName.getSiblings()?has_content> 
260              <#list TextPlans.PlanName.getSiblings() as cur_TextPlans_PlanName> 
261              <p class="text-color-white"><span class="text-color-blue-light">${cur_TextPlans_PlanName.getData()}</span> ${cur_TextPlans_PlanName.PlanDescription.getData()}</p> 
262              </#list> 
263            </#if> 
264     
265          </div> 
266 
267          <div class="hero__buttons"> 
268            <#if Buttons.LinkToPageb2xm.getSiblings()?has_content> 
269                <#list Buttons.LinkToPageb2xm.getSiblings() as cur_Buttons_LinkToPageb2xm> 
270                    <#assign buttonLink = cur_Buttons_LinkToPageb2xm.getFriendlyUrl()> 
271 
272                    <#if cur_Buttons_LinkToPageb2xm.RedirectURL.getData() != ''> 
273                        <#assign buttonLink = cur_Buttons_LinkToPageb2xm.RedirectURL.getData()> 
274                    </#if> 
275 
276                    <#-- sky+ conditions --> 
277                    <#if notShowContent == 'true'> 
278                        <#if buttonLink?contains('cadastrar')> 
279                            <#assign buttonLink = 'https://www.skymais.com.br/cadastrar'> 
280                        </#if> 
281                        <#if buttonLink?contains('acessar')> 
282                            <#assign buttonLink = 'https://www.skymais.com.br/acessar'> 
283                        </#if> 
284                    </#if> 
285 
286                    <a class="button ${cur_Buttons_LinkToPageb2xm.ButtonColorBackground.getData()}" href="${buttonLink}"> 
287                        ${cur_Buttons_LinkToPageb2xm.TextLink.getData()} 
288                    </a> 
289                </#list> 
290            </#if> 
291          </div> 
292             
293        </div> 
294         
295        <div class="hero__icon"> 
296        <#-- sky+ conditions --> 
297          <#if notShowContent == 'false'> 
298            <a href="#planes"> 
299              <span class="bi bi-chevron-down chevron"> 
300                <#if (iconDown.getData())?? && iconDown.getData() != ""> 
301                  <img id="chevronDown" alt="${iconDown.getAttribute("alt")}" data-fileentryid="${iconDown.getAttribute("fileEntryId")}" src="${substituirCaminhoCDN(iconDown.getData())}" /> 
302                </#if> 
303              </span> 
304            </a> 
305            </#if> 
306        </div> 
307      </div> 
308    </div> 
309  </div> 
310     
311<script> 
312    $(".hero__content .hero__buttons a").on( "click", function() { 
313        idElement = "Button-" + $( this ).text().replace(/[\r\n]/gm, '').replaceAll(" ", "-").trim(); 
314        handleAddBannerHomeGTM(idElement, userGTM, sessionGTM)  
315 
316        if ($(this).is(":last-child") && location.pathname.includes(pageHome)) { 
317          let dataLayer = { 
318            "event": "interactions", 
319            "eventParams": { 
320              'section': 'home',  
321              'v_category': 'login:login',  
322              'v_action': 'navigation',  
323              'v_label': 'enter-login',  
324              'v_client_id': 'not logged',  
325              'v_language': 'es', 
326              'v_app_name': 'dgo-web', 
327              'hash': 'e-010.011.001.000.000.052' 
328
329
330          window.dataLayer.push(dataLayer); 
331
332    }); 
333     
334 
335    $('.hero__icon a').on('click', function(event) { 
336    event.preventDefault(); 
337    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')  
338      || location.hostname == this.hostname) { 
339 
340      var target = $(this.hash); 
341       
342      target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
343      if (target.length) { 
344        $('html,body').animate({ 
345          scrollTop: target.offset().top - 100 
346        }, 1000); 
347        return false; 
348
349
350  }); 
351     
352    if(userLanguage === "AR"){ 
353        var __clientId = ""; 
354        (function() { 
355            try { 
356              ga(function(tracker) { 
357                __clientId = tracker.get('clientId') 
358                var click = $._data($(document)[0], 'events').click.filter(function(click) { 
359                  return click.selector === ".plan__action .button__primary" 
360                })[0] 
361                click.handler = new Function('return ' + click.handler.toString().replace("location.href = directvar_gobasicocombo;", "location.href = directvar_gobasicocombo + '?' + __clientId;").replace("location.href = directvar_gofullcombo;", "location.href = directvar_gofullcombo + '?' + __clientId;"))() 
362              }) 
363        } catch (e) {} 
364        })() 
365
366     
367    <#if hasCountDown == 'true'> 
368    /*countdown*/ 
369    function countDownDGO(endtime) { 
370      "use strict"; 
371     
372      var timeTotal = Date.parse(endtime) - Date.now(), 
373        timeSeconds = Math.floor((timeTotal / 1000) % 60), 
374        timeMinutes = Math.floor((timeTotal / 1000 / 60) % 60), 
375        timeHours = Math.floor((timeTotal / (1000 * 60 * 60)) % 24), 
376        timeDays = Math.floor(timeTotal / (1000 * 60 * 60 * 24)); 
377     
378      return { 
379        total: timeTotal, 
380        seconds: timeSeconds, 
381        minutes: timeMinutes, 
382        hours: timeHours, 
383        days: timeDays 
384      }; 
385
386     
387    function animateCounter(selector, targetValue) { 
388      var $element = $(selector); 
389      var currentValue = parseInt($element.text(), 10); 
390     
391      if (currentValue === targetValue) { 
392        return; 
393
394     
395      $element.addClass("counter-animate"); 
396      $element.text(targetValue); 
397     
398      setTimeout(function () { 
399        $element.addClass("show"); 
400      }, 10); 
401     
402      setTimeout(function () { 
403        $element.removeClass("counter-animate show"); 
404      }, 500); 
405
406     
407    function startCalc(endtime) { 
408      var timeTotal = countDownDGO(endtime); 
409     
410      animateCounter(".days", timeTotal.days); 
411      animateCounter(".hours", timeTotal.hours); 
412      animateCounter(".minutes", timeTotal.minutes); 
413      animateCounter(".seconds", timeTotal.seconds); 
414     
415      if (timeTotal.total <= 0) { 
416        clearInterval(timingNow); 
417        document.querySelector('.countdown-section').style.display = 'none'; 
418      } else if (window.getComputedStyle(document.querySelector('.countdown-section')).getPropertyValue('display') == 'none') { 
419        document.querySelector('.countdown-section').removeAttribute('style'); 
420
421
422     
423    var DeadLine = new Date("${Countdown.countdownDate.getData()} 22:30:00"); 
424     
425    const timingNow = setInterval(function () { 
426      startCalc(DeadLine); 
427    }, 1000); 
428    </#if> 
429</script> 

Content | DGO | PDP Estatico - UEFA Champions League | Button - Home Mobile

Content | DGO | PDP Estatico | Footer