Fecha modificacion : lun, 10 feb 2025 12:02:11 +0000 Fecha Publicacion : dom, 22 sep 2024 17:16:47 +0000 Fecha Creacion : dom, 22 sep 2024 17:16:47 +0000 2025/06/05 14:47:00
An error occurred while processing the template.
Invocation of method 'getImageProperties' in class com.liferay.portal.util.IterTemplateContent threw exception XYZ_E_INVALID_IMG_URL_ZYX at 21736/F/COPIA_NOTAESTANDAR_NO_MODIFICAR[line 69, column 44]
1$iterVelocityTools.setRenderArticleMode(1)
2#set($sectionID = "#printAssignedSectionID_v1")
3#set($canonicalUrl = $articleToolbox.getArticleViewer('canonical'))
4#set($title = $!articleToolbox.getTag(null,'Headline').data)
5#set($hostName = "#siteUrl()")
6#set($fullUrl = "${hostName}${canonicalUrl}")
7#set($titleRaw = $!title)
8#if(!$titleRaw) #set($titleRaw = "") #end
9#set($titleClean = $titleRaw.replaceAll('"', "'").replaceAll('\n', ' ').replaceAll('\r', '').replaceAll('\\', '\\\\').replaceAll('<', '').replaceAll('>', '').trim())
10#set($descRaw = $!articleToolbox.getTag(null, 'Resumen_News').data)
11#if(!$descRaw || $descRaw == "") #set($descRaw = $!articleToolbox.getTag(null, 'Subheadline').data) #end
12#if(!$descRaw || $descRaw == "") #set($descRaw = $!articleToolbox.getTag(null, 'Lead_Text').data) #end
13#if(!$descRaw || $descRaw == "") #set($descRaw = $titleClean) #end
14#set($descClean = $htmlUtil.stripHtml($descRaw).replaceAll('"', "'").replaceAll('\n', ' ').replaceAll('\r', '').replaceAll('\\', '\\\\').replaceAll('<', '').replaceAll('>', '').trim())
15#set($rawModify = $reserved-article-modified-date.data)
16#set($rawPublish = $reserved-article-display-date.data)
17#set($rawCreate = $reserved-article-create-date.data)
18
19Fecha modificacion : $rawModify
20Fecha Publicacion : $rawPublish
21Fecha Creacion : $rawCreate
22
23#set($ac-sectionDateFrom = $articleContext.selectNodes('articlectx/sections//section[@from]'))
24#set($ac-sectionDateFrom = $articleContext.selectNodes('articlectx/sections//section[@to]'))
25
26#foreach($node in $ac-sectionDateFrom)
27 $node.valueOf("@from")
28#end
29
30#set($fmtIn = "EEE, d MMM yyyy HH:mm:ss Z")
31#set($fmtOutISO = "yyyy-MM-dd'T'HH:mm:ssXXX")
32#set($fmtOutDisplay = "d MMMM yyyy")
33#set($dateObjP = $dateTool.toDate($fmtIn, $rawPublish))
34#if($dateObjP)
35 #set($datePublished = $dateTool.format($fmtOutISO, $dateObjP))
36 #set($dateDisplay = $dateTool.format($fmtOutDisplay, $dateObjP))
37#else
38 #set($datePublished = $dateTool.get($fmtOutISO))
39 #set($dateDisplay = $dateTool.get($fmtOutDisplay))
40#end
41#set($dateObjM = $dateTool.toDate($fmtIn, $rawModify))
42#if($dateObjM)
43 #set($dateModified = $dateTool.format($fmtOutISO, $dateObjM))
44#else
45 #set($dateModified = $datePublished)
46#end
47#set($hmTemas = {}) #getAcAssignedCatExtended_v1($hmTemas "Topic")
48#set($hmGeografico = {}) #getAcAssignedCatExtended_v1($hmGeografico "Location")
49#set($hmCompanies = {}) #getAcAssignedCatExtended_v1($hmCompanies "Companies")
50#set($hmPersonajes = {}) #getAcAssignedCatExtended_v1($hmPersonajes "People")
51#set($hmAutores = {}) #getAcAssignedCatExtended_v1($hmAutores "Author")
52#set($AuthorNoFoto = $!iterVelocityTools.getVariable($sectionID, "authorNoFoto"))
53#set($section = "#printAssignedSection_v1")
54#set($sectionSlug = $section.toLowerCase().replaceAll(" ", "-").replaceAll("á","a").replaceAll("é","e").replaceAll("í","i").replaceAll("ó","o").replaceAll("ú","u").replaceAll("ñ","n"))
55#set($imgDefault = "https://vanguardia.com.mx/base-portlet/webrsrc/theme/13d16cf89ee0b324585019c9998ec6dd.svg")
56#set($imgLCP = $articleToolbox.getImageURL("Image","0","crop_1152x648_detalle"))
57#set($imgOG = $articleToolbox.getImageURL("Image", "0", "social"))
58#set($imgNoCrop = $articleToolbox.getImageURL("Image", "0", ""))
59#set($jsonLdImage = $imgDefault)
60#if($imgLCP && $imgLCP != "")
61 #set($jsonLdImage = $imgLCP)
62#elseif($imgOG && $imgOG != "")
63 #set($jsonLdImage = $imgOG)
64#elseif($imgNoCrop && $imgNoCrop != "")
65 #set($jsonLdImage = $imgNoCrop)
66#end
67#set($jsonLdImageProps = false)
68#if($jsonLdImage && $jsonLdImage != $imgDefault)
69 #set($jsonLdImageProps = $articleToolbox.getImageProperties($jsonLdImage))
70#end
71#set($imgWidth = 1200)
72#set($imgHeight = 800)
73#if($jsonLdImageProps && $jsonLdImageProps.width)
74 #set($imgWidth = $jsonLdImageProps.width)
75#end
76#if($jsonLdImageProps && $jsonLdImageProps.height)
77 #set($imgHeight = $jsonLdImageProps.height)
78#end
79#set($ac-url = $articleContext.selectNodes('articlectx/url'))
80#set($xml-url = $ac-url.get(0).text)
81#set($url_actual = $!xml-url)
82#set($arrayListContenidos = [])
83#macro(regEl $name $type $class $tag)
84 #set($e = {})
85 #set($x = $e.put("name", $name))
86 #set($x = $e.put("type", $type))
87 #set($x = $e.put("cssclass", $class))
88 #set($x = $e.put("tag", $tag))
89 #set($x = $arrayListContenidos.add($e))
90#end
91#regEl("Text", "paragraph", "texto", "div")
92#regEl("Te_puede_interesar_web", "html", "Te_puede_interesar_web", "div")
93#regEl("TikTok_Text", "tiktok", "tiktok_text", "div")
94#regEl("ArticleText", "html", "ArticleText", "div")
95#regEl("h2_subtitulo", "paragraph", "texto", "h2")
96#regEl("h3_subtema", "paragraph", "texto", "h3")
97#regEl("h4_detalle", "paragraph", "texto", "h4")
98#regEl("Image_Text", "image", "img text", "div")
99#regEl("Image_Text_GIF", "image", "imagen", "div")
100#regEl("Lead_Text", "text", "intertitulo", "div")
101#regEl("HTML_Text", "html", "html_text", "div")
102#regEl("Twitter_Text", "twitter", "twitter_text", "div")
103#regEl("Facebook_Text", "facebook", "facebook_text", "div")
104#regEl("Instagram_Text", "instagram", "instagram_text", "div")
105#regEl("Youtube_Text", "youtube", "youtube_video", "div")
106#regEl("Multimedia_Text", "multimedia", "video", "div")
107#regEl("Flourish_Text", "text", "flourish_text", "div")
108#regEl("Quote", "text", "quote", "div")
109#regEl("Quote_byline", "text", "Quote_byline", "div")
110#regEl("linkTitle_Text", "text", "link_tpi", "div")
111#regEl("title_list", "microformat", "microformat", "div")
112#regEl("image_list", "microformat", "microformat", "div")
113#regEl("text_list", "microformat", "microformat", "div")
114#regEl("Parrafo_Lista", "text", "Parrafo_Lista", "div")
115#regEl("Titulo_News", "text", "titulo_news", "div")
116#regEl("Resumen_News", "text", "resumen_news", "div")
117#regEl("Boton", "text", "Boton", "div")
118#regEl("Lead", "text", "lead destacado", "div")
119#regEl("Ficha_Titulo", "text", "Ficha_Titulo", "div")
120#regEl("Ficha_Foto", "image", "Ficha_Foto", "div")
121#regEl("Ficha_Texto", "text", "Ficha_Texto", "div")
122#regEl("Ficha_Social", "text", "Ficha_Social", "div")
123#regEl("Entrevista_Pregunta", "text", "Entrevista_Pregunta", "div")
124#regEl("Entrevista_Respuesta", "text", "Entrevista_Respuesta", "div")
125#regEl("URLCanonical", "text", "URLCanonical", "div")
126#regEl("Titulo_App", "text", "Titulo_App", "div")
127#regEl("resena_titulo", "text", "resena_titulo", "div")
128#regEl("resena_imagen", "image", "resena_imagen", "div")
129#regEl("resena_texto", "text", "resena_texto", "div")
130#set($FacebookText_ = $articleToolbox.getTag(null,"Facebook_Text"))
131#if($FacebookText_ && $FacebookText_.data != "")
132<div id="fb-root"></div>
133<script async defer src="https://connect.facebook.net/es_LA/sdk.js#xfbml=1&version=v21.0"></script>
134#end
135#set($sectionUrl = "${hostName}/${sectionSlug}")
136#set($bcLevel1 = "")
137#set($bcLevel1Url = "")
138#set($bcLevel2 = "")
139#set($bcLevel2Url = "")
140#set($hasLevel2 = false)
141#if($canonicalUrl && $canonicalUrl.lastIndexOf("/") > 0)
142 #set($lastSlashIdx = $canonicalUrl.lastIndexOf("/"))
143 #set($sectionPath = $canonicalUrl.substring(0, $lastSlashIdx))
144 #set($tempPath = $sectionPath)
145 #if($tempPath.startsWith("/"))
146 #set($tempPath = $tempPath.substring(1))
147 #end
148 #set($firstSlash = $tempPath.indexOf("/"))
149 #if($firstSlash > 0)
150 #set($bcLevel1 = $tempPath.substring(0, $firstSlash))
151 #set($bcLevel1Url = "${hostName}/${bcLevel1}")
152 #set($nextIdx = $firstSlash + 1)
153 #set($bcLevel2 = $tempPath.substring($nextIdx))
154 #set($bcLevel2Url = "${hostName}${sectionPath}")
155 #set($hasLevel2 = true)
156 #else
157 #set($bcLevel1 = $tempPath)
158 #set($bcLevel1Url = "${hostName}/${bcLevel1}")
159 #end
160#end
161#if($bcLevel1 == "")
162 #set($bcLevel1 = $sectionSlug)
163 #set($bcLevel1Url = "${hostName}/${sectionSlug}")
164#end
165<script type="application/ld+json">
166{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Vanguardia","item":"https://vanguardia.com.mx"},{"@type":"ListItem","position":2,"name":"$htmlUtil.escape($bcLevel1)","item":"$htmlUtil.escape($bcLevel1Url)"}#if($hasLevel2),{"@type":"ListItem","position":3,"name":"$htmlUtil.escape($bcLevel2)","item":"$htmlUtil.escape($bcLevel2Url)"}#end]}
167</script>
168<script type="application/ld+json" id="vangdata-schema-newsarticle">
169{"@context":"https://schema.org","@type":"NewsArticle","headline":"$!{titleClean}","dateModified":"$!{dateModified}","datePublished":"$!{datePublished}","author":[#if($hmAutores && !$hmAutores.isEmpty())#set($authorIdx = 0)#foreach($elem in $hmAutores)#set($authorNameClean = $!elem.name.replaceAll('"', "'").replaceAll('\n', ' ').replaceAll('\\', '\\\\').replaceAll('<', '').replaceAll('>', '').trim())#set($authorNameLower = $authorNameClean.toLowerCase())#set($esAgencia = false)#if($authorNameLower.contains("efe") || $authorNameLower.contains("ap ") || $authorNameLower.equals("ap") || $authorNameLower.contains("espn") || $authorNameLower.contains("new york times") || $authorNameLower.contains("reforma") || $authorNameLower.contains("el universal") || $authorNameLower.contains("reuters") || $authorNameLower.contains("afp") || $authorNameLower.contains("notimex") || $authorNameLower.contains("dpa"))#set($esAgencia = true)#end#if($authorIdx > 0),#end#if($esAgencia){"@type":"Organization","name":"$!{authorNameClean}","url":"${hostName}/autor/-/meta/$htmlUtil.escapeURL($!elem.friendlyname)"}#else{"@type":"Person","name":"$!{authorNameClean}","url":"${hostName}/autor/-/meta/$htmlUtil.escapeURL($!elem.friendlyname)"}#end#set($authorIdx = $authorIdx + 1)#end#else{"@type":"Organization","name":"Vanguardia","url":"https://vanguardia.com.mx"}#end],"image":["$htmlUtil.escape($jsonLdImage)"],"isAccessibleForFree":true}
170</script>
171#set($youtubeContent = $articleToolbox.getTag(null,"Youtube_Text"))
172#if($youtubeContent && $youtubeContent.data && $youtubeContent.data != "")
173#set($youtubeRaw = $youtubeContent.data)
174#set($youtubeId = "")
175#if($youtubeRaw.contains("youtube.com/embed/"))
176 #set($startIdx = $youtubeRaw.indexOf("youtube.com/embed/"))
177 #set($startIdx = $startIdx + 18)
178 #set($tempStr = $youtubeRaw.substring($startIdx))
179 #if($tempStr.contains('"'))
180 #set($endIdx = $tempStr.indexOf('"'))
181 #set($youtubeId = $tempStr.substring(0, $endIdx))
182 #elseif($tempStr.contains("?"))
183 #set($endIdx = $tempStr.indexOf("?"))
184 #set($youtubeId = $tempStr.substring(0, $endIdx))
185 #else
186 #set($youtubeId = $tempStr.substring(0, 11))
187 #end
188#elseif($youtubeRaw.contains("youtu.be/"))
189 #set($startIdx = $youtubeRaw.indexOf("youtu.be/"))
190 #set($startIdx = $startIdx + 9)
191 #set($tempStr = $youtubeRaw.substring($startIdx))
192 #if($tempStr.contains('"'))
193 #set($endIdx = $tempStr.indexOf('"'))
194 #set($youtubeId = $tempStr.substring(0, $endIdx))
195 #else
196 #set($youtubeId = $tempStr.substring(0, 11))
197 #end
198#elseif($youtubeRaw.contains("watch?v="))
199 #set($startIdx = $youtubeRaw.indexOf("watch?v="))
200 #set($startIdx = $startIdx + 8)
201 #set($tempStr = $youtubeRaw.substring($startIdx))
202 #if($tempStr.contains("&"))
203 #set($endIdx = $tempStr.indexOf("&"))
204 #set($youtubeId = $tempStr.substring(0, $endIdx))
205 #elseif($tempStr.contains('"'))
206 #set($endIdx = $tempStr.indexOf('"'))
207 #set($youtubeId = $tempStr.substring(0, $endIdx))
208 #else
209 #set($youtubeId = $tempStr.substring(0, 11))
210 #end
211#end
212#set($youtubeIdClean = $youtubeId.replaceAll("[^a-zA-Z0-9_-]", ""))
213#if($youtubeIdClean && $youtubeIdClean.length() == 11)
214<script type="application/ld+json">
215{"@context":"https://schema.org","@type":"VideoObject","name":"$!{titleClean}","description":"$!{descClean}","thumbnailUrl":"https://img.youtube.com/vi/${youtubeIdClean}/maxresdefault.jpg","uploadDate":"$!{datePublished}","embedUrl":"https://www.youtube.com/embed/${youtubeIdClean}","contentUrl":"https://www.youtube.com/watch?v=${youtubeIdClean}"}
216</script>
217#end
218#end
219#set($metaOG = {}) #set($temp = $metaOG.put("property","og:site_name")) #set($temp = $metaOG.put("content", "Vanguardia")) $iterVelocityTools.addMetaTag($metaOG)
220#set($metaOG = {}) #set($temp = $metaOG.put("property","og:type")) #set($temp = $metaOG.put("content", "article")) $iterVelocityTools.addMetaTag($metaOG)
221#set($metaOG = {}) #set($temp = $metaOG.put("property","og:title")) #set($temp = $metaOG.put("content", "$htmlUtil.escape($titleClean)")) $iterVelocityTools.addMetaTag($metaOG)
222#set($metaOG = {}) #set($temp = $metaOG.put("property","og:description")) #set($temp = $metaOG.put("content", "$htmlUtil.escape($descClean)")) $iterVelocityTools.addMetaTag($metaOG)
223#set($metaOG = {}) #set($temp = $metaOG.put("property","og:url")) #set($temp = $metaOG.put("content", "$htmlUtil.escape($fullUrl)")) $iterVelocityTools.addMetaTag($metaOG)
224#set($metaOG = {}) #set($temp = $metaOG.put("property","og:image")) #set($temp = $metaOG.put("content", "$htmlUtil.escape($jsonLdImage)")) $iterVelocityTools.addMetaTag($metaOG)
225#set($metaOG = {}) #set($temp = $metaOG.put("property","og:image:width")) #set($temp = $metaOG.put("content", "$imgWidth")) $iterVelocityTools.addMetaTag($metaOG)
226#set($metaOG = {}) #set($temp = $metaOG.put("property","og:image:height")) #set($temp = $metaOG.put("content", "$imgHeight")) $iterVelocityTools.addMetaTag($metaOG)
227#set($metaOG = {}) #set($temp = $metaOG.put("property","article:published_time")) #set($temp = $metaOG.put("content", "$datePublished")) $iterVelocityTools.addMetaTag($metaOG)
228#set($metaOG = {}) #set($temp = $metaOG.put("property","article:modified_time")) #set($temp = $metaOG.put("content", "$dateModified")) $iterVelocityTools.addMetaTag($metaOG)
229#set($metaOG = {}) #set($temp = $metaOG.put("property","article:section")) #set($temp = $metaOG.put("content", "$htmlUtil.escape($section)")) $iterVelocityTools.addMetaTag($metaOG)
230#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:card")) #set($temp = $metaTW.put("content", "summary_large_image")) $iterVelocityTools.addMetaTag($metaTW)
231#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:site")) #set($temp = $metaTW.put("content", "@vanguardiamx")) $iterVelocityTools.addMetaTag($metaTW)
232#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:title")) #set($temp = $metaTW.put("content", "$htmlUtil.escape($titleClean)")) $iterVelocityTools.addMetaTag($metaTW)
233#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:description")) #set($temp = $metaTW.put("content", "$htmlUtil.escape($descClean)")) $iterVelocityTools.addMetaTag($metaTW)
234#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:image")) #set($temp = $metaTW.put("content", "$htmlUtil.escape($jsonLdImage)")) $iterVelocityTools.addMetaTag($metaTW)
235#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:image:alt")) #set($temp = $metaTW.put("content", "$htmlUtil.escape($titleClean)")) $iterVelocityTools.addMetaTag($metaTW)
236#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:url")) #set($temp = $metaTW.put("content", "$htmlUtil.escape($fullUrl)")) $iterVelocityTools.addMetaTag($metaTW)
237<meta name="robots" content="max-image-preview:large">
238<script>console.log("%c VNG-ESTANDAR-30 pruebah2 v1","background:#179d30ff;color:white;padding:4px;font-weight:bold");</script>
239<script src="https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.2.0/lazysizes.min.js" async></script>
240<style>.lazyload,.lazyloading{opacity:0}.lazyloaded{opacity:1;transition:opacity 300ms ease-in-out}</style>
241#if($imgLCP && $imgLCP != "")
242<link rel="preload" as="image" href="$htmlUtil.escape($imgLCP)" fetchpriority="high">
243#end
244<div class="template-infinity idart_$reserved-article-id.data detail col-100-top-one-col col-xs-12 v2" id-next="$htmlUtil.escape($!art_next.reserved-article-id.data)" id-section="$htmlUtil.escape($sectionID)">
245<style>.block_URLCanonical{display:none}#iter-content-wrapper{min-height:1000px}@media (min-width:769px){.row.middle{align-items:flex-start !important;overflow:visible !important}.row.middle>.col-md-3{align-self:flex-start !important;overflow:visible !important}.col-60-40-top-two-col{overflow:visible !important}.col-60-40-top-one-col{overflow:visible !important}.portlet-column{overflow:visible !important}.mrf-article-body{overflow:visible !important}.template-infinity{overflow:visible !important}.container{overflow:visible !important}article{overflow:visible !important}}div.block_Parrafo_Lista p{margin:0px !important}div.media_block1 a div img{border-radius:50% !important;border:#ff6d00 3px solid}.misarticulos{font-size:1rem;text-transform:uppercase;font-family:"PT Sans",helvetica,arial,sans-serif;font-weight:400;letter-spacing:1px;border-bottom:solid 2.5px #ff7c2c;max-width:168px;margin:0 auto}.author-card2{border:#c7c7c7d1 1px solid;margin-block:50px;width:90%;margin-inline:auto;padding-inline:5%;padding-top:30px;background-color:#F2F2F2}.author-description{padding-inline:5%;margin-bottom:20px}.author-description a{color:#ff6d00 !important}.btn-follow-wrapper{position:relative;display:inline-block;margin-bottom:15px}.btn-follow-google{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;min-height:32px;border:1px solid #dadce0;border-radius:999px;font-family:Arial,Helvetica,sans-serif;font-size:14px;font-weight:500;color:#1f1f1f;background-color:#fff;text-decoration:none;cursor:pointer;transition:background-color .2s ease,box-shadow .2s ease;box-sizing:border-box}.btn-follow-google:hover{background-color:#f8f9fa;box-shadow:0 1px 3px rgba(0,0,0,.08);text-decoration:none;color:#1f1f1f}.btn-follow-google:active{background-color:#f1f3f4}.btn-follow-plus{font-size:18px;font-weight:300;line-height:1;color:#5f6368;margin-right:2px}.btn-follow-text{white-space:nowrap;color:#3c4043}.btn-follow-google-icon{display:flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}.btn-follow-google-icon svg{width:18px;height:18px}.btn-follow-tooltip{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);background-color:#3c4043;color:#fff;font-size:12px;padding:6px 10px;border-radius:4px;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;pointer-events:none;z-index:10}.btn-follow-tooltip::before{content:'';position:absolute;bottom:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-bottom-color:#3c4043}.btn-follow-wrapper:hover .btn-follow-tooltip{opacity:1;visibility:visible}</style>
246<style>
247 /* Estilos para el elemento Te_puede_interesar_web */
248 .tpi-card-container {border: 1px solid #ff7c2c;background-color: #fff5e6;border-radius: 4px;padding: 15px;margin: 20px 0;display: flex;align-items: center;gap: 15px;max-width: 100%;box-sizing: border-box;}
249 .tpi-card-image {flex-shrink: 0;width: 170px;height: 150px;object-fit: cover;border-radius: 4px;}
250 .tpi-card-content {flex: 1;display: flex;flex-direction: column;gap: 8px;min-width: 0;padding: 6px;}
251 .tpi-card-label {font-weight: bold;color: #000;font-size: 1rem;margin: 0;}
252 .tpi-card-title {font-weight: normal;color: #000;font-size: 1rem;line-height: 1.4;margin: 0;text-decoration: none;}
253 .tpi-card-link {text-decoration: none;color: inherit;display: inline-flex;}
254 .tpi-card-link:hover .tpi-card-title {text-decoration: underline;}
255 .tpi-loading {padding: 20px;text-align: center;color: #666;}
256 .tpi-error {padding: 20px;text-align: center;color: #d32f2f;border: 1px solid #ff7c2c;background-color: #fff5e6;border-radius: 4px;}
257 .M8marcador {background-color: #ba48d6;color: #fff;display: inline-flex;align-items: center;line-height: 16px;border-radius: 4px;font-family: Arial, sans-serif;font-weight: bold;font-size: 12px;letter-spacing: 0.5px;padding: 2px 7px;text-transform: uppercase;position: relative;}
258 @media (max-width: 768px) {
259 .tpi-card-container {flex-direction: column;align-items: flex-start;}
260 .tpi-card-image {width: 100%;height: 200px;}
261 .tpi-card-link {display: contents !important;}
262 }
263</style>
264<div class="container">
265 <script>var group_id="$htmlUtil.escape($!request.theme-display.scope-group-id)";var id_art_infinity="$htmlUtil.escape($!reserved-article-id.data)";if(typeof n_noticia==="undefined")n_noticia=0;#if($iterVelocityTools.getVelocityVariable("teaseritemposition") == 1)var teaser_first=true;n_noticia=1;idart_view="$htmlUtil.escape($reserved-article-id.data)";#else var teaser_first=false;n_noticia=n_noticia+1;#end</script>
266 #set($titleForJS = $titleClean.replaceAll('"', '\\"').replaceAll("'", "\\'").replaceAll('\n', ' ').replaceAll('<', '').replaceAll('>', '').replaceAll('/', '\\/'))
267 <script>document.addEventListener("DOMContentLoaded",function(){if(typeof sendHitUser==="function"){sendHitUser("$titleForJS");}});</script>
268 <div class="banner-bg">
269 <div class="banner-flex">
270 <div class="publicidad-container" style="height: 300px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; width: 100%;">
271 <span class="publicidad-label">Publicidad</span>
272 <div id="div-gpt-ad-1733160976056-0" style="width: 100%; max-height: 250px; margin: 0 auto; display: flex; justify-content: center;"></div>
273 </div>
274 </div>
275 </div>
276 <article class="mrf-article-body" style="min-height: 1000px;">
277 #set($NombreAutor = "")
278 #set($IDAutor = "")
279 #if($hmAutores && $hmAutores.size() > 0)
280 #foreach($elem in $hmAutores)
281 #set($NombreAutor = $htmlUtil.escape($elem.name))
282 #set($IDAutor = $htmlUtil.escape($elem.id))
283 <div data-author-name="$NombreAutor" class="meta-author-name"></div>
284 <div data-author-id="$IDAutor" class="meta-author-id"></div>
285 <div class="categoryListItem categoryPageItem" data-categoryid="$IDAutor" data-categoryname="$NombreAutor"></div>
286 #end
287 #end
288 <div id="eww-general" style="display:none;"></div>
289 <h1 class="headline artit font-1 medium bold" canonicalUrl="$htmlUtil.escape($canonicalUrl)" idart="$htmlUtil.escape($reserved-article-id.data)">#getTitle_v1</h1>
290 <div class="btn-follow-wrapper">
291 <a href="https://profile.google.com/cp/CgsvZy8xdGN6d2Nrag" class="btn-follow-google" aria-label="Seguir a VANGUARDIA en Google Discover" target="_blank" rel="noopener">
292 <span class="btn-follow-plus">+</span>
293 <span class="btn-follow-text">Seguir en</span>
294 <span class="btn-follow-google-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18"><path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/><path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/><path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/><path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/></svg></span>
295 </a>
296 <span class="btn-follow-tooltip">Seguir en Google</span>
297 </div>
298 <div class="info">
299 <span class="secc">#printTopcontainer_v1("section" "")</span> /
300 <span class="date">$htmlUtil.escape($dateDisplay)</span>
301 </div>
302 <div class="row middle">
303 <div class="col-60-40-top-one-col col-xs-12 col-md-8 col-lg-8 portlet-column nopadding" id="col-60-40-top-one-col">
304 #set($hasImages = $articleToolbox.getNumImageTags("Image", "true"))
305 #if($section == "Opinión" || $section == "Politicón")
306 #if($hasImages > 0)
307 <div class="image_main">
308 #getMultimediaMixed_v1("fullcontent", "crop_1152x648_detalle", "100%", "432", "100%")
309 </div>
310 #elseif($hmAutores && $hmAutores.size() > 0)
311 #foreach($elem in $hmAutores)
312 #set($articuloInstrumental = $aboutCategoryArticles.getArticle($elem.id))
313 #set($authorNameEsc = $htmlUtil.escape($elem.name))
314 #set($imgColumn = $!articuloInstrumental.getImageTag("ImagenColumnista","0","crop_1152x648_detalle","","","","","true","",""))
315 #if($imgColumn && $imgColumn != "")
316 <div class="image_main">$!imgColumn</div>
317 #end
318 #end
319 #end
320 #else
321 <div class="image_main">
322 #getMultimediaMixed_v1("fullcontent", "crop_1152x648_detalle", "100%", "432", "100%")
323 </div>
324 #end
325 <div class="row middle">
326 <div class="col-60-40-top-two-col col-xs-12 col-md-3 col-lg-3 portlet-column nopadding" id="col-60-40-top-two-col">
327 <div class="author">
328 #if($hmAutores && $hmAutores.size() > 0)
329 #foreach($elem in $hmAutores)
330 #set($articuloInstrumental = $aboutCategoryArticles.getArticle($elem.id))
331 #set($authorNameEsc = $htmlUtil.escape($elem.name))
332 #set($imgAuthor = $!articuloInstrumental.getImageTag("Image","0","crop_250x250","","","","","$authorNameEsc","",""))
333 <div class="img_author">
334 #if($imgAuthor && $imgAuthor != "")
335 $!imgAuthor
336 #else
337 <img class="img-fluid" src="$htmlUtil.escape($AuthorNoFoto)" alt="$authorNameEsc"/>
338 #end
339 </div>
340 <div class="text_author">por <span class="name_author"><a href="/autor/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$authorNameEsc</a></span></div>
341 <div data-author-name="$authorNameEsc" class="meta-author-name"></div>
342 <div data-author-id="$htmlUtil.escape($elem.id)" class="meta-author-id"></div>
343 #set($NombreAutor = $authorNameEsc)
344 #set($IDAutor = $htmlUtil.escape($elem.id))
345 #end
346 #end
347 </div>
348 <div class="compartirr">
349 <div class="rrss d-desktop">
350 <h2 class="sectiondestacadas" style="margin-bottom: 15px; margin-top: 40px;">COMPARTIR</h2>
351 <div class="network-social">
352 #set($uEnc = $escapeTool.url($fullUrl))
353 #set($tEnc = $escapeTool.url($title))
354 <ul class="social-options">
355 <li><a class="facebook" href="https://www.facebook.com/sharer/sharer.php?u=${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Facebook"><div class="fab facebook"></div><b>Facebook</b></a></li>
356 <li><a class="twitter" href="https://twitter.com/intent/tweet?text=${tEnc}&url=${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Twitter"><div class="fab twitter"></div><b>Twitter</b></a></li>
357 <li><a class="whatsapp" href="https://api.whatsapp.com/send?text=${tEnc}%20-%20${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Whatsapp"><div class="fab whatsapp"></div><b>Whatsapp</b></a></li>
358 <li><a class="linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Linkedin"><div class="fab linkedin"></div><b>Linkedin</b></a></li>
359 </ul>
360 </div>
361 </div>
362 <div class="temas d-desktop" temas="$hmTemas.size()">
363 #set($hmSpec = {})
364 #getAcAssignedCatExtended_v1($hmSpec "marcadores")
365
366 #if($hmSpec && $hmSpec.size() > 0 && $hmSpec.get(0).name == "8M")
367 <h2 class="sectiondestacadas1" style="margin-bottom: 15px;">MARCADORES</h2><br>
368 <div style="position: relative;">
369 <a href="https://vanguardia.com.mx/topic/-/meta/8m"><span class="M8marcador">#8M</span></a>
370 </div>
371 #end
372 #if($hmTemas && $hmTemas.size() > 0)
373 <h2 class="sectiondestacadas1" style="margin-bottom: 15px;">TEMAS</h2><br>
374 #set($count = 0)
375 #foreach($elem in $hmTemas)
376 #if($count < 3)
377 <div class="item_tema t_$hmTemas.size() keywords TemasTopics">
378 <a href="/topic/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
379 </div>
380 #set($count = $count + 1)
381 #end
382 #end
383 #end
384 #if($hmGeografico && $hmGeografico.size() > 0)
385 <h2 class="sectiondestacadas1" style="margin-bottom: 15px;">Localizaciones</h2><br>
386 #set($count = 0)
387 #foreach($elem in $hmGeografico)
388 #if($count < 3)
389 <div class="item_tema t_$hmGeografico.size() keywords TemasLocalizaciones">
390 <a href="/localizaciones/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
391 </div>
392 #set($count = $count + 1)
393 #end
394 #end
395 #end
396 #if($hmPersonajes && $hmPersonajes.size() > 0)
397 <h2 class="sectiondestacadas1" style="margin-bottom: 15px;">Personajes</h2><br>
398 #set($count = 0)
399 #foreach($elem in $hmPersonajes)
400 #if($count < 3)
401 <div class="item_tema t_$hmPersonajes.size() keywords TemasPersonajes">
402 <a href="/personajes/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
403 </div>
404 #set($count = $count + 1)
405 #end
406 #end
407 #end
408 #if($hmCompanies && $hmCompanies.size() > 0)
409 <h2 class="sectiondestacadas1" style="margin-bottom: 15px;">Organizaciones</h2><br>
410 #set($count = 0)
411 #foreach($elem in $hmCompanies)
412 #if($count < 3)
413 <div class="item_tema t_$hmCompanies.size() keywords TemasOrganizaciones">
414 <a href="/organizaciones/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
415 </div>
416 #set($count = $count + 1)
417 #end
418 #end
419 #end
420 </div>
421 </div>
422 </div>
423 #php_if("getenv('ITER_UA_IS_MOBILE')==='true'")
424 <div class="rrss end d-movil" style="background: white; z-index: 3;">
425 <div class="cab-rrss">COMPARTIR</div>
426 <div class="network-social">
427 <ul class="social-options">
428 <li><a class="facebook" href="https://www.facebook.com/sharer/sharer.php?u=${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Facebook"><div class="fab facebook"></div></a></li>
429 <li><a class="twitter" href="https://twitter.com/intent/tweet?text=${tEnc}&url=${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Twitter"><div class="fab twitter"></div></a></li>
430 <li><a class="whatsapp" href="https://api.whatsapp.com/send?text=${tEnc}%20-%20${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Whatsapp"><div class="fab whatsapp"></div></a></li>
431 <li><a class="linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Linkedin"><div class="fab linkedin"></div></a></li>
432 </ul>
433 </div>
434 </div>
435 #php_end
436 <div class="col-60-40-top-one-col col-xs-12 col-md-9 col-lg-9 portlet-column nopadding" id="col-60-40-top-one-col" data-section="$htmlUtil.escape($section)" data-author="$NombreAutor" data-post-title="$htmlUtil.escape($titleClean)" data-post-id="$htmlUtil.escape($reserved-article-id.data)" data-author-id="$IDAutor">
437 #set($tempSubheadline = "#getTeaserSubheadline_v1(true)")
438 #if($tempSubheadline && $tempSubheadline != "")
439 <h2 class="subheadline">$tempSubheadline</h2>
440 #end
441 <div class="banner-bg">
442 <div class="banner-flex">
443 <div class="publicidad-container" style="height: 650px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; width: 100%;">
444 <span class="publicidad-label">Publicidad</span>
445 <div id="div-gpt-ad-1733161081350-0" style="width: 100%; max-height: 600px; margin: 0 auto; display: flex; justify-content: center;"></div>
446 </div>
447 </div>
448 </div>
449 <div id="eww-save-post" style="display:none;"></div>
450 <div class="text resizable lazyload" itemprop="articleBody">
451 #if($section == "Politicón")
452 <div class="PoliticonNotaslogo" style="width: 300px; height: 60px; margin-bottom: 3rem;"></div>
453 #end
454 #printHTMLContentArticle_v1_latam($arrayListContenidos, "crop_1152x648", "100%", "100%", "375")
455 </div>
456 <div class="banner-bg">
457 <div class="banner-flex">
458 <div class="publicidad-container" style="height: 650px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; width: 100%;">
459 <span class="publicidad-label">Publicidad</span>
460 <div id="div-gpt-ad-1733161131848-0" style="width: 100%; max-height: 600px; margin: 0 auto; display: flex; justify-content: center;"></div>
461 </div>
462 </div>
463 </div>
464 <div class="temas d-movil" temas="$hmTemas.size()">
465 #if($hmTemas && $hmTemas.size() > 0)
466 <h2 class="sectiondestacadas1" style="margin-bottom: 15px;">Temas</h2><br>
467 #set($count = 0)
468 #foreach($elem in $hmTemas)
469 #if($count < 3)
470 <div class="item_tema t_$hmTemas.size() keywords TemasTopics">
471 <a href="/topic/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
472 </div>
473 #set($count = $count + 1)
474 #end
475 #end
476 <br>
477 #end
478 #if($hmGeografico && $hmGeografico.size() > 0)
479 <h2 class="sectiondestacadas1" style="margin-bottom: 15px;">Localizaciones</h2><br>
480 #set($count = 0)
481 #foreach($elem in $hmGeografico)
482 #if($count < 3)
483 <div class="item_tema t_$hmGeografico.size() keywords TemasLocalizaciones">
484 <a href="/localizaciones/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
485 </div>
486 #set($count = $count + 1)
487 #end
488 #end
489 <br>
490 #end
491 #if($hmPersonajes && $hmPersonajes.size() > 0)
492 <h2 class="sectiondestacadas1" style="margin-bottom: 15px;">Personajes</h2><br>
493 #set($count = 0)
494 #foreach($elem in $hmPersonajes)
495 #if($count < 3)
496 <div class="item_tema t_$hmPersonajes.size() keywords TemasPersonajes">
497 <a href="/personajes/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
498 </div>
499 #set($count = $count + 1)
500 #end
501 #end
502 <br>
503 #end
504 #if($hmCompanies && $hmCompanies.size() > 0)
505 <h2 class="sectiondestacadas1" style="margin-bottom: 15px;">Organizaciones</h2><br>
506 #set($count = 0)
507 #foreach($elem in $hmCompanies)
508 #if($count < 3)
509 <div class="item_tema t_$hmCompanies.size() keywords TemasOrganizaciones">
510 <a href="/organizaciones/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
511 </div>
512 #set($count = $count + 1)
513 #end
514 #end
515 <br>
516 #end
517 </div>
518 #set($NombreAutor = "")
519 #set($IDAutor = "")
520 #if($hmAutores && $hmAutores.size() > 0)
521 #foreach($elem in $hmAutores)
522 #set($NombreAutor = $htmlUtil.escape($elem.name))
523 #set($IDAutor = $htmlUtil.escape($elem.id))
524 <div class="categoryListItem categoryPageItem" data-categoryid="$IDAutor" data-categoryname="$NombreAutor"></div>
525 #set($articuloAutor = $aboutCategoryArticles.getArticle("$elem.id"))
526 #if($articuloAutor)
527 #set($imgAuthor = $!articuloAutor.getImageTag("Image","0","crop_250x250","","","","","$htmlUtil.escape($!articuloAutor.Headline.data)","",""))
528 #if($articuloAutor.Text && $articuloAutor.Text.data && $articuloAutor.Text.data.trim() != "" && $articuloAutor.Headline && $articuloAutor.Headline.data && $articuloAutor.Headline.data.trim() != "")
529 <div style="border-top: solid 1px #80808047; margin-top: 30px;"></div>
530 <div class="author-card2">
531 <div class="row">
532 <div class="col-12" style="display: flex; justify-content: center;">
533 <div class="media_block1" style="padding: 1rem; margin-top: 15px;">
534 <a style="width: 140px; display: flex; margin: auto;" href="/autor/-/meta/$htmlUtil.escapeURL($elem.friendlyname)" title="$htmlUtil.escape($!articuloAutor.Headline.data)">
535 $!imgAuthor
536 </a>
537 <a style="color: black;" href="/autor/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">
538 <p style="font-size: 1.7rem; font-family: 'PT Serif', Georgia, serif; font-weight: 400; line-height: 120%; margin-top: 15px;">$htmlUtil.escape($!articuloAutor.Headline.data)</p>
539 </a>
540 </div>
541 </div>
542 </div>
543 <div class="row">
544 <div class="col-12" style="display: flex; justify-content: center; margin-bottom: 30px;">
545 <div class="text_block">
546 #set($authorDescRaw = $!articuloAutor.Text.data)
547 #set($authorDescSafe = $authorDescRaw.replaceAll("(?i)<script[^>]*>.*?</script>", "").replaceAll("(?i)on\\w+\\s*=", "data-removed=").replaceAll("(?i)javascript:", ""))
548 <div class="author-description">$!authorDescSafe</div>
549 <div class="row">
550 <div class="col-12" style="display: flex; justify-content: center;">
551 #if($articuloAutor.twitterProfile && $articuloAutor.twitterProfile.data != "")
552 #set($twitterUrl = $articuloAutor.twitterProfile.data.replaceAll("[^a-zA-Z0-9:/._-]", ""))
553 <div style="margin-right: 20px;" class="author-twitter1">
554 <a href="$htmlUtil.escape($twitterUrl)" target="_blank" rel="noopener noreferrer nofollow">
555 <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512" style="font-size: 30px;" fill="#FF6600">
556 <path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"/>
557 </svg>
558 </a>
559 </div>
560 #end
561 #if($articuloAutor.emailAutor && $articuloAutor.emailAutor.data != "")
562 #set($emailClean = $articuloAutor.emailAutor.data.replaceAll("[^a-zA-Z0-9@._-]", ""))
563 <div class="author-email1">
564 <a href="mailto:$htmlUtil.escape($emailClean)">
565 <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512" style="font-size: 30px;" fill="#FF6600">
566 <path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"/>
567 </svg>
568 </a>
569 </div>
570 #end
571 </div>
572 </div>
573 </div>
574 </div>
575 </div>
576 </div>
577 #end
578 #end
579 #end
580 #end
581 <div class="ComentariosDR" id="eww-comments" style="display:none;"></div>
582 #if($Generic && $Generic.getSiblings().size() > 0)
583 <ul class="generic">
584 #foreach($el in $Generic.getSiblings())
585 <li><span class="icon"></span><a href="$htmlUtil.escape($!el.Document.data)">$htmlUtil.escape($!el.data) ($htmlUtil.escape($el.Extension.data))</a></li>
586 #end
587 </ul>
588 #end
589 #set($urlLink = $articleToolbox.getTag(null,"linkURL"))
590 #set($titleLink = $articleToolbox.getTag(null,"linkTitle"))
591 #if(($urlLink && $urlLink.data != "") && ($titleLink && $titleLink.data != ""))
592 #set($urlLinkClean = $urlLink.data.replaceAll("[<>\"']", ""))
593 <a class="ext_link" href="$htmlUtil.escape($urlLinkClean)" target="_blank" rel="nofollow noopener noreferrer">
594 <strong>$htmlUtil.escape($!titleLink.data)</strong>
595 </a>
596 #end
597 #if($linkIntTitle && $linkIntTitle.getSiblings().size() > 0)
598 <div class="link_tpi">
599 <div class="head_int"><span class="icon"></span> TE PUEDE INTERESAR: </div>
600 #foreach($el in $linkIntTitle.getSiblings())
601 #set($intUrlClean = $el.linkIntURL.data.replaceAll("[<>\"']", ""))
602 <div class="item_int"><a href="$htmlUtil.escape($intUrlClean)">$htmlUtil.escape($!el.data)</a></div>
603 #end
604 </div>
605 #end
606 </div>
607 </div>
608 </div>
609 <div class="col-60-40-top-two-col col-xs-12 col-md-4 col-lg-4 portlet-column nopadding" id="col-60-40-top-two-col">
610 <div id="" class="portlet-boundary portlet-static-end htmlcontainer-portlet block_newsletter">
611 <div class="move-from-a">
612 <h2 hidden class="sectiondestacadas">Encuesta Vanguardia</h2>
613 <div hidden id="encuesta-container" style="margin-bottom: 40px; margin-top: 40px;"></div>
614 </div>
615 </div>
616 <div class="ranking_infinity lateral_secc c004_003"></div>
617 </div>
618 </div>
619 </article>
620</div>
621</div>
622<div class="cl"></div>
623#set($urlExterna = $articleToolbox.getTag(null,"URLCanonical"))
624#if($urlExterna && $urlExterna.data != "")
625 #set($urlExternaData = $urlExterna.data)
626 #set($urlExternaData = $urlExternaData.replaceAll("<.*?>",""))
627 #set($urlExternaData = $urlExternaData.replaceAll("[\"']",""))
628 #set($linkCanonical = {})
629 #set($temp = $linkCanonical.put("rel","canonical"))
630 #set($temp = $linkCanonical.put("href",$htmlUtil.escape($urlExternaData)))
631 $iterVelocityTools.addLinkTag($linkCanonical)
632 #set($urlmrf = "#siteUrl()$url_actual")
633 #set($linkCanonical2 = {})
634 #set($temp = $linkCanonical2.put("property","mrf:canonical"))
635 #set($temp = $linkCanonical2.put("content",$htmlUtil.escape($urlmrf)))
636 $iterVelocityTools.addMetaTag($linkCanonical2)
637#end
638
639<script>
640document.addEventListener("DOMContentLoaded", function () {
641
642 /* ==========================================================
643 LIMPIEZA DE H2, H3, H4 (elimina <p> interno)
644 ========================================================== */
645 function cleanHeading(selector) {
646 document.querySelectorAll(selector).forEach(function (heading) {
647 var p = heading.querySelector("p");
648 if (p) {
649 heading.textContent = p.textContent;
650 }
651 });
652 }
653
654 cleanHeading("h2.paragraph.texto");
655 cleanHeading("h3.paragraph.texto");
656 cleanHeading("h4.paragraph.texto");
657
658
659 /* ==========================================================
660 ALT Y TITLE AUTOMÁTICO EN IMÁGENES
661 ========================================================== */
662 var pageTitle = "$!{titleClean}";
663
664 document.querySelectorAll('img:not([alt]), img[alt=""]').forEach(function (img) {
665 img.setAttribute("alt", pageTitle);
666 });
667
668 document.querySelectorAll('img:not([title]), img[title=""]').forEach(function (img) {
669 img.setAttribute("title", pageTitle);
670 });
671
672
673 /* ==========================================================
674 LAZYLOAD EN IMÁGENES
675 ========================================================== */
676 document.querySelectorAll(".text.resizable img").forEach(function (img) {
677
678 if (
679 img.src &&
680 !img.classList.contains("lazyloaded") &&
681 !img.classList.contains("lazyload")
682 ) {
683 img.setAttribute("data-src", img.src);
684 img.removeAttribute("src");
685 img.classList.add("lazyload");
686 }
687
688 if (img.srcset) {
689 img.setAttribute("data-srcset", img.srcset);
690 img.removeAttribute("srcset");
691 }
692 });
693
694
695 /* ==========================================================
696 LAZYLOAD EN IFRAMES
697 ========================================================== */
698 document.querySelectorAll(".text.resizable iframe").forEach(function (iframe) {
699
700 if (
701 iframe.src &&
702 !iframe.classList.contains("lazyloaded") &&
703 !iframe.classList.contains("lazyload")
704 ) {
705 iframe.setAttribute("data-src", iframe.src);
706 iframe.removeAttribute("src");
707 iframe.classList.add("lazyload");
708 }
709 });
710
711
712 /* ==========================================================
713 IMAGEN PRINCIPAL PRIORITARIA
714 ========================================================== */
715 var mainImg = document.querySelector(".image_main img");
716
717 if (mainImg) {
718 mainImg.setAttribute("loading", "eager");
719 mainImg.setAttribute("fetchpriority", "high");
720 mainImg.classList.remove("lazyload", "lazyloading");
721 }
722
723
724 /* ==========================================================
725 PÁRRAFOS VACÍOS
726 ========================================================== */
727 document.querySelectorAll(".block_Parrafo_Lista").forEach(function (block) {
728
729 block.querySelectorAll("p").forEach(function (paragraph) {
730
731 if (paragraph.innerHTML.trim() === "") {
732 paragraph.style.height = "20px";
733 paragraph.style.display = "block";
734 }
735
736 var boldElement = paragraph.querySelector("b");
737 if (boldElement && boldElement.innerHTML.trim() === "") {
738 boldElement.style.height = "20px";
739 boldElement.style.display = "block";
740 }
741 });
742 });
743
744
745 /* ==========================================================
746 LIMPIEZA DE MICRODATOS
747 ========================================================== */
748 if (document.body.hasAttribute("itemscope")) {
749 document.body.removeAttribute("itemscope");
750 document.body.removeAttribute("itemtype");
751 }
752
753 document.querySelectorAll("[itemprop]").forEach(function (el) {
754 el.removeAttribute("itemprop");
755 el.removeAttribute("itemscope");
756 el.removeAttribute("itemtype");
757 });
758
759
760 /* ==========================================================
761 ELIMINAR SCHEMA DUPLICADO
762 ========================================================== */
763 document.querySelectorAll('script[type="application/ld+json"]').forEach(function (script) {
764
765 var content = script.textContent || "";
766
767 if (
768 script.id !== "vangdata-schema-newsarticle" &&
769 (
770 content.includes('"NewsArticle"') ||
771 content.includes('"Article"')
772 )
773 ) {
774 script.remove();
775 }
776 });
777
778
779 /* ==========================================================
780 RECONSTRUCCIÓN DE IFRAMES DE YOUTUBE
781 ========================================================== */
782 document.querySelectorAll("iframe").forEach(function (oldIframe) {
783
784 var src =
785 oldIframe.src ||
786 oldIframe.getAttribute("data-src") ||
787 "";
788
789 if (src.includes("youtube.com") || src.includes("youtu.be")) {
790
791 var newIframe = document.createElement("iframe");
792
793 newIframe.src = src;
794 newIframe.width = oldIframe.width || "100%";
795 newIframe.height = oldIframe.height || "315";
796 newIframe.frameBorder = "0";
797
798 newIframe.setAttribute(
799 "allow",
800 "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
801 );
802
803 newIframe.setAttribute(
804 "referrerpolicy",
805 "strict-origin-when-cross-origin"
806 );
807
808 newIframe.setAttribute("allowfullscreen", "");
809 newIframe.style.cssText = oldIframe.style.cssText || "max-width:100%;";
810
811 if (oldIframe.className) {
812 newIframe.className = oldIframe.className;
813 }
814
815 oldIframe.parentNode.replaceChild(newIframe, oldIframe);
816 }
817 });
818
819
820 /* ==========================================================
821 RANKING SOLO EN DESKTOP
822 ========================================================== */
823 if (typeof isMobileEnvironment !== "undefined" && isMobileEnvironment === false) {
824
825 var target = document.querySelector(".ranking_infinity");
826 var source = document.querySelector(".infinity_ranking .iter-tabview-content");
827
828 if (target && source) {
829 target.innerHTML = source.innerHTML;
830 }
831 }
832
833});
834
835
836/* ==========================================================
837 HEADER FIXED AL HACER SCROLL
838========================================================== */
839window.addEventListener("scroll", function () {
840
841 var menu = document.querySelector(".menu-principal-header.desktop");
842
843 if (menu) {
844 menu.classList.toggle("fixed", window.scrollY > 0);
845 }
846});
847</script>
848
849
850<script>
851// Script para procesar elementos Te_puede_interesar_web
852(function() {
853 'use strict';
854
855 function extractUrl(text) {
856 // Buscar URLs en el texto
857 var urlRegex = /(https?:\/\/[^\s<>"']+)/gi;
858 var matches = text.match(urlRegex);
859 if (matches && matches.length > 0) {
860 return matches[0].trim();
861 }
862 // Si no hay URL explícita, intentar usar el texto completo si parece una URL
863 var trimmed = text.trim();
864 if (trimmed.startsWith('http://') || trimmed.startsWith('https://')) {
865 return trimmed;
866 }
867 return null;
868 }
869
870 function extractMetaFromHTML(html, url) {
871 var parser = new DOMParser();
872 var doc = parser.parseFromString(html, 'text/html');
873
874 var title = '';
875 var image = '';
876
877 // Intentar obtener título de og:title
878 var ogTitle = doc.querySelector('meta[property="og:title"]');
879 if (ogTitle) {
880 title = ogTitle.getAttribute('content') || '';
881 }
882
883 // Si no hay og:title, intentar con el título de la página
884 if (!title) {
885 var pageTitle = doc.querySelector('title');
886 if (pageTitle) {
887 title = pageTitle.textContent || '';
888 }
889 }
890
891 // Intentar obtener imagen de og:image
892 var ogImage = doc.querySelector('meta[property="og:image"]');
893 if (ogImage) {
894 image = ogImage.getAttribute('content') || '';
895 }
896
897 // Si no hay og:image, intentar con la primera imagen destacada
898 if (!image) {
899 var firstImage = doc.querySelector('img[src*="crop"], img[src*="detalle"], img[src*="social"]');
900 if (firstImage) {
901 image = firstImage.getAttribute('src') || firstImage.getAttribute('data-src') || '';
902 }
903 }
904
905 // Si aún no hay imagen, buscar cualquier imagen
906 if (!image) {
907 var anyImage = doc.querySelector('img');
908 if (anyImage) {
909 image = anyImage.getAttribute('src') || anyImage.getAttribute('data-src') || '';
910 }
911 }
912
913 // Convertir URL relativa a absoluta si es necesario
914 if (image && !image.startsWith('http')) {
915 try {
916 var urlObj = new URL(url);
917 if (image.startsWith('//')) {
918 image = urlObj.protocol + image;
919 } else if (image.startsWith('/')) {
920 image = urlObj.origin + image;
921 } else {
922 image = urlObj.origin + '/' + image;
923 }
924 } catch (e) {
925 console.warn('Error al convertir URL de imagen:', e);
926 }
927 }
928
929 return {
930 title: title.trim(),
931 image: image.trim()
932 };
933 }
934
935 function createCardElement(url, title, image) {
936 var container = document.createElement('div');
937 container.className = 'tpi-card-container';
938
939 var link = document.createElement('a');
940 link.href = url;
941 link.className = 'tpi-card-link';
942 link.target = '_blank';
943 link.rel = 'noopener noreferrer';
944
945 // Imagen
946 if (image) {
947 var img = document.createElement('img');
948 img.src = image;
949 img.alt = title || 'Imagen del artículo';
950 img.className = 'tpi-card-image';
951 img.loading = 'lazy';
952 link.appendChild(img);
953 }
954
955 // Contenedor de contenido
956 var contentDiv = document.createElement('div');
957 contentDiv.className = 'tpi-card-content';
958
959 // Label "TE PUEDE INTERESAR:"
960 var label = document.createElement('p');
961 label.className = 'tpi-card-label';
962 label.textContent = 'TE PUEDE INTERESAR:';
963 contentDiv.appendChild(label);
964
965 // Título
966 var titleElement = document.createElement('p');
967 titleElement.className = 'tpi-card-title';
968 titleElement.textContent = title || 'Artículo';
969 contentDiv.appendChild(titleElement);
970
971 link.appendChild(contentDiv);
972 container.appendChild(link);
973
974 return container;
975 }
976
977 function processTePuedeInteresarElement(element) {
978 var textContent = element.textContent || element.innerText || '';
979 var url = extractUrl(textContent);
980
981 if (!url) {
982 element.innerHTML = '<div class="tpi-error">No se pudo encontrar una URL válida</div>';
983 return;
984 }
985
986 // Mostrar estado de carga
987 element.innerHTML = '<div class="tpi-loading">Buscando notas para ti...</div>';
988
989 // Verificar si la URL es del mismo dominio
990 var isSameDomain = false;
991 try {
992 var urlObj = new URL(url);
993 var currentHost = window.location.hostname;
994 isSameDomain = urlObj.hostname === currentHost || urlObj.hostname.endsWith('.' + currentHost);
995 } catch (e) {
996 // Si hay error al parsear la URL, asumir que no es del mismo dominio
997 }
998
999 // Función para procesar el HTML obtenido
1000 function processHTML(html) {
1001 var meta = extractMetaFromHTML(html, url);
1002 var card = createCardElement(url, meta.title || 'Artículo', meta.image);
1003 element.innerHTML = '';
1004 element.appendChild(card);
1005 }
1006
1007 // Intentar fetch directo si es del mismo dominio
1008 if (isSameDomain) {
1009 fetch(url, {
1010 method: 'GET',
1011 mode: 'cors',
1012 credentials: 'same-origin'
1013 })
1014 .then(function(response) {
1015 if (!response.ok) {
1016 throw new Error('Error al obtener el contenido');
1017 }
1018 return response.text();
1019 })
1020 .then(function(html) {
1021 processHTML(html);
1022 })
1023 .catch(function(error) {
1024 console.warn('Error con fetch directo, intentando con proxy:', error);
1025 // Si falla, intentar con proxy
1026 fetchWithProxy();
1027 });
1028 } else {
1029 // Usar proxy CORS para dominios externos
1030 fetchWithProxy();
1031 }
1032
1033 function fetchWithProxy() {
1034 var proxyUrl = 'https://api.allorigins.win/get?url=' + encodeURIComponent(url);
1035
1036 fetch(proxyUrl)
1037 .then(function(response) {
1038 if (!response.ok) {
1039 throw new Error('Error al obtener el contenido');
1040 }
1041 return response.json();
1042 })
1043 .then(function(data) {
1044 if (data && data.contents) {
1045 processHTML(data.contents);
1046 } else {
1047 throw new Error('No se pudo obtener el contenido');
1048 }
1049 })
1050 .catch(function(error) {
1051 console.error('Error al procesar Te_puede_interesar_web:', error);
1052 // Crear card con información mínima
1053 var card = createCardElement(url, 'Artículo', '');
1054 element.innerHTML = '';
1055 element.appendChild(card);
1056 });
1057 }
1058 }
1059
1060 // Procesar cuando el DOM esté listo
1061 function initTePuedeInteresar() {
1062 var elements = document.querySelectorAll('.Te_puede_interesar_web, .block_Te_puede_interesar_web');
1063
1064 elements.forEach(function(element) {
1065 // Verificar que el elemento contenga una URL válida
1066 var textContent = element.textContent || element.innerText || '';
1067 var url = extractUrl(textContent);
1068
1069 // Procesar si encontramos una URL válida y el elemento no ha sido procesado ya
1070 if (url && !element.classList.contains('tpi-processed')) {
1071 // Marcar como procesado para evitar procesarlo dos veces
1072 element.classList.add('tpi-processed');
1073 processTePuedeInteresarElement(element);
1074 }
1075 });
1076 }
1077
1078 // Ejecutar cuando el DOM esté listo
1079 if (document.readyState === 'loading') {
1080 document.addEventListener('DOMContentLoaded', initTePuedeInteresar);
1081 } else {
1082 initTePuedeInteresar();
1083 }
1084
1085 // También ejecutar después de un pequeño delay para asegurar que el contenido dinámico esté cargado
1086 setTimeout(initTePuedeInteresar, 1000);
1087})();
1088</script> NUESTRO CONTENIDO PREMIUM