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}&amp;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}&amp;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