null
Atrás

Combo Mes Youtube y TikTok

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> IconoUno.IconoTres  [in template "2233237#2233283#27904042" at line 93, column 57]

----
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 be 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: ${IconoUno.IconoTres.getData()}  [in template "2233237#2233283#27904042" at line 93, column 55]
----
1<#-- 
2Last update: 31/03/2020 
3Changelog (Last 3): 
4	31/03/2020: Se Agrega texto legales  
5	18/10/2019: Modificados textos GTM para DataLayer 
6	26/09/2019: Añadida clase recommended 
7	04/09/2019: Modificación  
8--> 
9 
10<#-- Google Tag manager--> 
11	<#-- 
12		Categoría de Producto para el caso de Ecuador: 
13		1. Línea nueva y combo 
14		2. Portabilidad y combo 
15		3. Comprar combo 
16		4. Comprar comodines 
17 --> 
18 
19    <#assign vPageLink = button.buttonPageLink.getFriendlyUrl()>  
20	<#assign vExtLink = button.buttonExtLink.getData()> 
21	<#if vExtLink?has_content> 
22		<#assign link = vExtLink> 
23	<#elseif vPageLink?has_content> 
24		<#assign link = vPageLink> 
25	</#if> 
26	<#assign cat1Url = '/pasarme-a-tuenti-con-linea-nueva'/> 
27	<#assign cat2Url = '/portarse-a-tuenti'/> 
28	<#assign cat3Url = '/only-combo-here'/> 
29	<#assign cat4Url = '/only-xtra-here'/> 
30	<#if link?contains(cat1Url)> 
31		<#assign comboId = IDsAMDOCS.idChip.getData()/> 
32		<#assign comboCategory = 'Línea nueva y combo'/> 
33	<#elseif link?contains(cat2Url)> 
34		<#assign comboId = IDsAMDOCS.idChip.getData()/> 
35		<#assign comboCategory = 'Portabilidad y combo'/> 
36	<#elseif link?contains(cat3Url)> 
37		<#assign comboId = IDsAMDOCS.idSinChip.getData()/> 
38		<#assign comboCategory = 'Comprar combo'/> 
39	<#elseif link?contains(cat4Url)> 
40		<#assign comboId = ''/> 
41		<#assign comboCategory = 'Comprar comodines'/> 
42	<#else> 
43		<#assign comboId = 'No category match'/> 
44		<#assign comboCategory = link/> 
45	</#if> 
46<#-- /Google Tag manager--> 
47 
48<#-- 
49<#assign vRecommended=""> 
50 
51<#if typeCombo.getData() == "recommended"> 
52	<#assign vRecommended="recommended"> 
53<#elseif typeCombo.getData() == "especial"> 
54	<#assign vRecommended="green"> 
55</#if>  
56--> 
57 
58 
59<#assign vRecommended=""> 
60<#if typeCombo.getData() == "powerBienvenida"> 
61<#assign vRecommended="powerBienvenida"> 
62<#elseif typeCombo.getData() == "mesBienvenida"> 
63<#assign vRecommended="mesBienvenida"> 
64</#if> 
65 
66<div class="section-combos-list section-combos-list-v2" data-gtm-nombre="${TituloCombo.getData()} ${upperText.getData()}" data-gtm-valor="${priceValue.getData()}" data-gtm-id="${IDsAMDOCS.idChip.getData()}"> 
67 
68	<div class="container container-section"> 
69		<div class="row-list-combos"> 
70			<div class="item-list-combo ${vRecommended}" > 
71			 
72				  
73				        <div class="general"> 
74    				        <div class="item-inline data-size size-box flex-box"> 
75            					<div class="content"> 
76            						<!--<div class="col-image"><img src="/documents/143522/178306/chip-carrusel.png/4a9d5125-5ff8-7a26-28fe-cf82d8f55752?t=1555342021772" alt="chip - Combos Tuenti" title="chip - Combos Tuenti"></div> --> 
77            						<div  class="col-text"> 
78            				            <h2 class="h2">${TituloCombo.getData()}</h2> 
79            							<h3 class="top">${upperText.getData()} 
80            							</h3> 
81            							<span class="size">${size.getData()}</span> 
82            						</div> 
83            						 
84            					</div> 
85            				</div> 
86			 
87                            <div class="item-inline flex-box add"> 
88            					<div class="content"> 
89            						<strong class="title">${GigasAdicionales.getData()}</strong> 
90                                    <ul> 
91                                    	<li><img src="${IconoUno.getData()}"></li> 
92                                      	<li><img src="${IconoUno.IconoDos.getData()}"></li> 
93                                      	<li><img src="${IconoUno.IconoTres.getData()}"></li> 
94                                   	</ul> 
95            					</div> 
96            				</div> 
97				   
98    				     
99        				    <div class="item-inline data-list flex-box"> 
100            					<div class="content"> 
101            						<@getFeatures /> 
102            					</div> 
103            				</div> 
104            				<div class="item-inline data-price flex-box"> 
105            					<div class="content"> 
106            						<span  class="price">${priceValue.getData()}</span> 
107            						<#if typeCombo.getData() != "especial"> 
108            							<p class="bottom-price">${featuresComparador.duracion.getData()}</p> 
109            						</#if>						 
110            					</div> 
111            				</div> 
112            				<div class="item-inline data-btn flex-box"> 
113            				    <div class="check-fullwidth"> 
114                    				 
115                			    </div> 
116            					<div class="content"> 
117            					 
118                					<#-- Button --> 
119                        			<#if button.buttonExtLink.getData()?has_content> 
120                        				<#assign link = button.buttonExtLink.getData()> 
121                        			<#elseif button.buttonPageLink.getFriendlyUrl()?has_content> 
122                        				<#assign link = button.buttonPageLink.getFriendlyUrl()> 
123                        			</#if> 
124                        			 
125                        	<#-- Google Tag manager--> 
126                               <#if button.idGTM.getData()??> 
127                                  <#assign GTM = button.idGTM.getData()> 
128                               </#if> 
129             
130            						<a href="${link}?producto=${.vars['reserved-article-id'].data}" title="" class="btn btn-red  button">${button.getData()}</a> 
131            					</div> 
132            				</div> 
133        				</div>   
134        		<div class="check-compare"> 
135		            <span class="text select-comp" onclick="comparar(this)">Comparar  
136		             <span class="btn-check checked-buy"></span></span> 
137				</div>  		 
138			</div> 
139			 
140			<span class="data-list"> 
141    			<span class="text">${textoInferiorComparador.getData()}</span> 
142    	    </span> 
143			 
144		</div> 
145	</div> 
146</div> 
147 
148<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")/> 
149<#assign destinationLayout = layoutLocalService.getFriendlyURLLayout(groupId, false, "/comparadorCombos")/> 
150<#assign urlComparadorCombos = portalUtil.getLayoutFriendlyURL(layoutLocalService.getLayout(destinationLayout.getPlid()), themeDisplay,locale)/> 
151 
152 
153<script> 
154	var compararCombos=[]; 
155	 
156    pedirVoto('${TituloCombo.getData()} ${upperText.getData()}','${IDsAMDOCS.idChip.getData()}','${priceValue.getData()}'); 
157      
158	function comparar(index){ 
159		var element= $(index); 
160		if(element.find('.select-comparar').length == 1){ 
161			element.children().removeClass("select-comparar icons-check-simple"); 
162			compararCombos=[]; 
163		}else{ 
164			element.children().addClass("select-comparar icons-check-simple"); 
165			var articleId=$(index).parents(".section-combos-list").prev(".articleId-combo").text(); 
166			console.log("ArticleId " + element) 
167			compararCombos.push(articleId); 
168			if(compararCombos.length == 2){ 
169				var allCombos=[]; 
170				for(var i=0;i<$(".articleId-combo").length;i++){ 
171					allCombos.push($($(".articleId-combo").get(i)).text()); 
172
173				var groupId=$($(".groupId-combo").get(0)).text();				 
174				window.location.href="${urlComparadorCombos}?group="+groupId+"&combos="+allCombos.join()+"&comp="+compararCombos.join(); 
175
176
177
178 
179</script> 
180 
181<!-- Track event for Google Tag Manager --> 
182<script> 
183$(".${GTM}").on('click', function(event){ 
184    event.stopPropagation(); 
185    event.stopImmediatePropagation(); 
186    // Establece data-id y data-category para GTM 
187    $('.section-combos-list').attr('data-id', '${comboId}'); 
188	$('.section-combos-list').attr('data-category', '${comboCategory}'); 
189	 
190	var priceSigned = '${priceValue.getData()}'; 
191	var price = priceSigned.replace("$",""); 
192	 
193	dataLayer.push({ 
194		'event':'trackEvent', 
195		'eventCategory':'Funnel - Recarga',		 
196		'eventAction':'Opciones de combo', 
197		'eventLabel':'combo-'+price 
198	}); 
199 
200 
201}); 
202 
203</script> 
204<!-- End track event for Google Tag Manager --> 
205 
206<#macro getFeatures> 
207	<#if features.getSiblings()?has_content> 
208		<ul class="col-list"> 
209			<#assign flagFeature=0> 
210			<#list features.getSiblings() as cur_features> 
211				<li class="item"> 
212					<p class="text">${cur_features.getData()}</p> 
213				</li> 
214			</#list> 
215			<li class=""> 
216		<#if (iconosApps.getSiblings())?has_content> 
217			<#list iconosApps.getSiblings() as cur_icons> 
218				<img class="bottom-img img-comparador" src="${cur_icons.getData()}" alt="${cur_icons.AltIconoApp.getData()}" title="${cur_icons.TituloIconoApp.getData()}"/> 
219			</#list> 
220		</#if> 
221			</li> 
222		</ul> 
223	</#if> 
224</#macro> 
225 
226 
227  
228 <style> 
229	.section-combos-list .mesBienvenida .add ul li{background-color:#fff;padding:5px;display:flex}.section-combos-list .powerBienvenida .add ul li{background-color:#fff;padding:5px;display:flex}.mesBienvenida{display:flex!important;flex-flow:initial!important;justify-content:space-between!important}.mesBienvenida .flex-box{width:auto!important;display:flex!important;flex-flow:column!important;justify-content:center!important;padding-right:2.25rem!important}.mesBienvenida .flex-box .h2{font-size:1rem!important;color:#3b327f!important}.mesBienvenida .flex-box strong{font-family:Catamaran,Arial,sans-serif;font-size:1.5625rem;line-height:1.875rem;font-weight:700;color:#3b327f}.mesBienvenida .flex-box ul{margin-top:15px}.mesBienvenida .flex-box ul li{margin:5px 0}.mesBienvenida .flex-box .top{font-weight:700!important;margin-top:15px}.mesBienvenida .add{padding-left:2.25rem!important}.mesBienvenida .item-inline .content{padding:0 0 0!important}.mesBienvenida .check-compare .text{display:block;font-family:Catamaran,Arial,sans-serif;font-size:.875rem;line-height:normal;font-weight:400;color:#767d85;cursor:pointer;padding:0 1.6875rem 0 0;position:relative}.mesBienvenida .check-compare .text .btn-check{display:inline-block;border:1px solid #fff;border-radius:.25rem;height:1.25rem;width:1.25rem;margin:0 -1.6875rem 0 .4375rem;vertical-align:middle}.mesBienvenida .text .btn-check.select-comparar::before{display:inline-block;font-size:.75rem;line-height:1.125rem;color:#f06}.item-list-combo div{display:flex!important;width:100%!important}.mesBienvenida .data-size .col-text{display:flex!important;flex-flow:column}.mesBienvenida .add .content{flex-flow:column}.item-list-combo .check-compare{position:absolute!important;top:.9375rem!important;right:1rem!important;display:flex!important;justify-content:flex-end!important}.mesBienvenida .data-price .content{display:flex;flex-flow:column}.mesBienvenida .data-price .bottom-price{font-family:Catamaran,Arial,sans-serif;font-size:1rem!important;color:#fff!important}.powerBienvenida{display:flex!important;flex-flow:initial!important;justify-content:space-between!important;background-color:#000;background-color:#f06;border:solid 1px #a8afbb}.powerBienvenida .flex-box{width:auto!important;display:flex!important;flex-flow:column!important;justify-content:center!important;padding-right:2.25rem!important}.powerBienvenida .flex-box .h2{font-size:1rem!important;color:#3b327f!important}.powerBienvenida .flex-box strong{font-family:Catamaran,Arial,sans-serif;font-size:1.5625rem;line-height:1.875rem;font-weight:700;color:#fff}.powerBienvenida .flex-box ul{margin-top:15px}.powerBienvenida .flex-box ul li{margin:5px 0}.powerBienvenida .data-list .text{color:#fff!important}.powerBienvenida .data-list .item::before{color:#fff!important}.powerBienvenida .flex-box .top{font-weight:700!important;margin-top:15px}.powerBienvenida .data-size .col-text{display:flex!important;flex-flow:column}.powerBienvenida .add{padding-left:2.25rem!important}.powerBienvenida .item-inline .content{padding:0 0 0!important}.powerBienvenida .check-compare .text{display:block;font-family:Catamaran,Arial,sans-serif;font-size:.875rem;line-height:normal;font-weight:400;color:#fff!important;cursor:pointer;padding:0 1.6875rem 0 0;position:relative}.powerBienvenida .check-compare .text .btn-check{display:inline-block;border:1px solid #fff!important;border-radius:.25rem;height:1.25rem;width:1.25rem;margin:0 -1.6875rem 0 .4375rem;vertical-align:middle}.powerBienvenida .text .btn-check.select-comparar::before{display:inline-block;font-size:.75rem;line-height:1.125rem;color:#fff!important}.powerBienvenida.data-size .col-text{display:flex!important;flex-flow:column}.powerBienvenida .add .content{flex-flow:column}.powerBienvenida .item-list-combo .check-compare{position:absolute!important;top:.9375rem!important;right:1rem!important;display:flex!important;justify-content:right!important}.powerBienvenida .data-price .content{display:flex;flex-flow:column}.powerBienvenida .data-price .bottom-price{font-family:Catamaran,Arial,sans-serif;font-size:1rem!important}.powerBienvenida .btn-red{background:#fff!important;color:#f06!important}.powerBienvenida .data-price .price{color:#fff!important}.bottom-price{color:#fff!important}.mesBienvenida{background-color:#000}.mesBienvenida .flex-box strong{color:#fff}.mesBienvenida .price{color:#fff!important}.mesBienvenida .btn.btn-red{background:#fff;color:#000}.mesBienvenida .btn-check{border:1px solid #fff}.mesBienvenida .top{color:#000}.mesBienvenida .size{color:#000}.section-combos-list .row-list-combos .item-list-combo .check-compare .text .btn-check{border:1px solid #fff!important}.mesBienvenida .general .content .col-text .top{color:#000!important}.mesBienvenida .general .content .col-text .size{color:#000!important}.section-combos-list .row-list-combos .data-list .item::before{color:#fff!important}.mesBienvenida .add ul li{background-color:#000!important}.section-combos-list .powerBienvenida .add ul li{background-color:#f06!important}@media (max-width:991px){.section-combos-list .mesBienvenida .add ul li{justify-content:center}.mesBienvenida .data-size{padding:0 2.25rem!important}.mesBienvenida .data-size .content{text-align:left!important}.mesBienvenida .general{flex-flow:column}.mesBienvenida .data-price{padding:0 2.25rem!important}.mesBienvenida .data-list{padding:0 2.25rem!important}.mesBienvenida .add{text-align:center;margin-top:25px}.mesBienvenida .data-price .content{margin-top:25px;text-align:center!important}.section-combos-list .powerBienvenida .add ul li{justify-content:center}.powerBienvenida .data-size{padding:0 2.25rem!important}.powerBienvenida .data-size .content{text-align:left!important}.powerBienvenida .general{flex-flow:column}.powerBienvenida .data-price{padding:0 2.25rem!important}.powerBienvenida .data-list{padding:0 2.25rem!important}.powerBienvenida .add{text-align:center;margin-top:25px}.powerBienvenida .data-price .content{margin-top:25px;text-align:center!important}.powerBienvenida .data-size .content h2{color:#fff!important}.powerBienvenida .data-size .content h3{color:#fff!important}.powerBienvenida .data-size .content span{color:#fff!important}}  
230        
231    .section-combos-list-v2 .item-inline { 
232        width: 25% !important; 
233
234     
235     
236    .mesBienvenida .add ul li{ 
237        padding: 0px !important; 
238
239    .powerBienvenida .add ul li { 
240        padding: 0px !important; 
241
242     
243    .mesBienvenida .data-list .text { 
244        color: #fff !important; 
245
246    .mesBienvenida .check-compare .text { 
247        color: #fff !important; 
248
249     
250     
251    @media(max-width: 991px){ 
252        .section-combos-list-v2 .item-inline { 
253            width: 100% !important; 
254
255        .mesBienvenida .general .content .col-text .top { 
256            color: #fff !important; 
257
258        .mesBienvenida .general .content .col-text .size { 
259            color: #fff !important; 
260
261
262 </style>