1<!DOCTYPE html> 2<html lang="es"> 3<head> 4<meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1.0"> 6<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 6-7
6 7<script async src="https://www.googletagmanager.com/gtag/js?id=
7G-JEJ3XM5MD4
vendor: 12 bytes, line 7
7"></script>
8<script> 9
vendor: 134 bytes, lines 9-13
9window.dataLayer = window.dataLayer || []; 10 function gtag(){dataLayer.push(arguments);} 11 gtag('js', new Date()); 12 13 gtag('config', '
13G-JEJ3XM5MD4
vendor: 4 bytes, line 13
13');
14</script>
14 15<title>El Show de los Impactos â FM 98.1</title> 16<meta name="description" content="Radio, noticias y entretenimiento desde Posadas, Misiones."> 17<meta name="robots" content="index, follow"> 18<link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png"> 19<link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png"> 20<link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png"> 21<link rel="icon" href="../favicon.ico" type="image/x-icon"> 22<link href="https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap" rel="stylesheet"> 23<link rel="stylesheet" href="assets/site.css"> 24</head> 25<body> 26<p id="app-boot" class="loading-msg app-boot">Cargandoâ¦</p> 27<div id="app" v-cloak> 28 <div class="topbar"> 29 <div class="tb-l"> 30 <div class="tb-live"><span class="pulse"></span><span>Al Aire</span></div> 31 <div class="vu"> 32 <div class="vb"></div><div class="vb"></div><div class="vb"></div> 33 <div class="vb"></div><div class="vb"></div><div class="vb"></div> 34 </div> 35 <span class="tb-freq">FM 98.1</span> 36 </div> 37 <button type="button" class="btn-escuchar" @click="toggleAudio">{{ isPlaying ? 'â Detener' : 'â¶ Escuchar en vivo' }}</button> 38 <audio id="stream-audio" class="hidden" preload="none"> 39 <source src="https://streamlky.alsolnet.com/fmshow" type="audio/mpeg"> 40 </audio> 41</div> 42 <header class="site-header"> 43 <a href="index.php" class="logo"> 44 <img src="https://elshowdelosimpactos.com/logoPage2025_v2.png" alt="El Show de los Impactos"> 45 <div class="logo-text"> 46 <span class="logo-name">El Show de los Impactos</span>
47 <span class="logo-fm">FM 98.1 · Posadas, Misiones</span> 48 </div> 49 </a> 50 51 <button 52 type="button" 53 class="nav-toggle" 54 :class="{ open: menuAbierto }" 55 aria-label="Abrir menú" 56 :aria-expanded="menuAbierto ? 'true' : 'false'" 57 @click="toggleMenu"> 58 <span></span><span></span><span></span> 59 </button> 60 61 <div class="nav-backdrop" v-if="menuAbierto" @click="cerrarMenu" aria-hidden="true"></div> 62 63 <nav class="site-nav" :class="{ open: menuAbierto }"> 64 <a href="index.php" :class="{ on: navActive === 'inicio' }" @click.prevent="navInicio">Inicio</a> 65 <a href="#noticias-section" :class="{ on: navActive === 'noticias' }" @click.prevent="navScroll('noticias-section')">Noticias</a> 66 <a href="#podcast-section" @click.prevent="navScroll('podcast-section')">Podcast</a> 67 <a href="#hero-vivo" @click.prevent="navScroll('hero-vivo')">En Vivo</a> 68 <button type="button" class="nav-search" aria-label="Buscar" @click="navBuscar"> 69 <svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg> 70 </button> 71 </nav> 72</header> 73 74 <div class="ticker" v-if="tickerItems.length"> 75 <div class="ticker-tag">Ahora</div> 76 <div class="ticker-scroll"> 77 <div class="ticker-inner"> 78 <span v-for="(t, i) in tickerDoble" :key="'t-' + i">{{ t }}</span> 79 </div> 80 </div> 81 </div> 82 83 <div class="w"> 84 <div class="hero"> 85 <a v-if="destacada" :href="urlNoticia(destacada.id)" class="hero-nota"> 86 <div class="hero-nota-img"> 87 <img v-if="destacada.url_imagen" :src="destacada.url_imagen" :alt="destacada.titulo"> 88 <div v-else class="ph" v-html="placeholderSvg"></div> 89 <span class="hero-nota-cat">{{ destacada.seccion_title || 'Destacado' }}</span> 90 </div> 91 <div class="hero-nota-body"> 92 <div class="hero-nota-title">{{ destacada.titulo }}</div> 93 <div class="hero-nota-meta"> 94 <span>{{ tiempoRelativo(destacada) }}</span> 95 <span class="sep">â</span> 96 <span>{{ destacada.seccion_title }}</span> 97 </div> 98 <div class="hero-nota-excerpt" v-if="destacada.copete">{{ destacada.copete }}</div> 99 </div> 100 </a> 101 102 <div class="hero-vivo" id="hero-vivo"> 103 <div class="vivo-top"> 104 <span class="vivo-dot"></span> 105 <span class="vivo-top-label">En Vivo</span> 106 <span class="vivo-top-sub">FM 98.1 · YouTube</span> 107 </div> 108 <div class="vivo-embed"> 109 <iframe :src="videoSrc" title="El Show en Vivo" allowfullscreen allow="autoplay;encrypted-media"></iframe> 110 </div> 111 <div class="vivo-foot"> 112 <span class="vivo-foot-l">En vivo / Ãltimo programa</span> 113 <span class="vivo-foot-r">FM 98.1</span> 114 </div> 115 </div> 116 </div> 117 118 <a href="https://wa.me/543764361973" class="wa" target="_blank" rel="noopener"> 119 <div class="wa-ball"> 120 <svg viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg> 121 </div> 122 <div><div class="wa-tag">Escribinos</div><div class="wa-msg">Mandá tu foto o video</div></div> 123 <div class="wa-chevron">âº</div> 124 </a> 125 126 <div class="pills" id="noticias-section"> 127 <button 128 v-for="cat in categorias" 129 :key="cat.id" 130 type="button" 131 class="pill" 132 :class="{ on: seccionActiva === cat.id }" 133 @click="filtrarSeccion(cat.id)"> 134 {{ cat.nombre }} 135 </button> 136 </div> 137 138 <div class="sec-label">Entrevistas</div> 139 <div class="entrevistas" v-if="entrevistas.length"> 140 <a 141 v-for="item in entrevistas" 142 :key="'e-' + item.id" 143 :href="urlNoticia(item.id)" 144 class="ecard"> 145 <div class="ecard-img"> 146 <img v-if="item.url_imagen" :src="item.url_imagen" :alt="item.titulo"> 147 <svg v-else fill="none" stroke="#ccc" stroke-width=".7" viewB
147ox="0 0 24 24"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><path d="m21 15-5-5L5 21"/></svg> 148 </div> 149 <div class="ecard-stripe"></div> 150 <div class="ecard-body"> 151 <div class="ecard-tag">Entrevista</div> 152 <div class="ecard-title">{{ item.titulo }}</div> 153 <div class="ecard-guest">{{ tiempoRelativo(item) }} · {{ item.seccion_title }}</div> 154 </div> 155 </a> 156 </div> 157 158 <div class="sec-label">Ãltimas noticias</div> 159 160 <div v-if="cargando && !noticias.length" class="loading-msg">Cargando noticiasâ¦</div> 161 162 <template v-for="(bloque, idx) in gridBlocks" :key="'b-' + idx"> 163 <div v-if="bloque.type === 'grid'" class="grid4"> 164 <a 165 v-for="noticia in bloque.noticias" 166 :key="noticia.id" 167 :href="urlNoticia(noticia.id)" 168 class="card"> 169 <div class="card-img"> 170 <img v-if="noticia.url_imagen" :src="noticia.url_imagen" :alt="noticia.titulo"> 171 <svg v-else fill="none" stroke="#ccc" stroke-width=".7" viewBox="0 0 24 24"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><path d="m21 15-5-5L5 21"/></svg> 172 <div class="card-cat">{{ noticia.seccion_title }}</div> 173 </div> 174 <div class="card-body"> 175 <div class="card-titulo">{{ noticia.titulo }}</div> 176 <div class="card-hora">{{ tiempoRelativo(noticia) }}</div> 177 </div> 178 </a> 179 </div> 180 181 <div v-else-if="bloque.type === 'brow'" class="brow"> 182 <div v-for="(ban, bi) in bloque.banners" :key="'ban-' + idx + '-' + bi" class="bs"> 183 <a v-if="ban" :href="ban.url" target="_blank" rel="noopener"> 184 <img :src="ban.direccion" alt="" @error="onBannerError($event)"> 185 </a> 186 <span v-else class="bs-lbl">Publicidad</span> 187 </div> 188 </div> 189 190 <div v-else-if="bloque.type === 'bfull'" class="bfull"> 191 <a v-if="bloque.banner" :href="bloque.banner.url" target="_blank" rel="noopener"> 192 <img :src="bloque.banner.direccion" alt="Auspiciante destacado" @error="onBannerFullError($event)"> 193 </a> 194 <span v-else class="bfull-lbl">â Auspiciante Destacado â</span> 195 </div> 196 </template> 197 198 <button 199 v-if="hayMasNoticias" 200 type="button" 201 class="btn-load-more" 202 :disabled="cargando" 203 @click="cargarMas"> 204 {{ cargando ? 'Cargandoâ¦' : 'Cargar más' }} 205 </button> 206 207 <div class="aniv"> 208 <video controls preload="metadata"> 209 <source src="https://elshowdelosimpactos.com/audios/vivo.mp4" type="video/mp4"> 210 </video> 211 <div class="aniv-info"> 212 <div class="aniv-eyebrow">Especial aniversario</div> 213 <div class="aniv-num">50</div> 214 <div class="aniv-sub">Años en el aire<br>de Misiones</div> 215 <div class="aniv-p">Un recorrido por los momentos más importantes de nuestra radio. Desde los primeros dÃas hasta hoy, la voz que acompañó a Posadas y a toda la provincia.</div> 216 </div> 217 </div> 218 </div> 219 220 <div class="pod" id="podcast-section"> 221 <div class="w"> 222 <div class="pod-head"> 223 <div class="pod-icon"> 224 <svg viewBox="0 0 24 24"><path d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z"/></svg> 225 </div> 226 <div class="pod-title">Podcast · Spotify</div> 227 </div> 228 <div class="pod-grid"> 229 <div v-for="pod in podcasts" :key="pod.id" class="pod-card"> 230 <div class="pod-img"> 231 <img :src="pod.image" :alt="pod.title"> 232 </div> 233 <div class="pod-body"> 234 <a :href="pod.link" class="pod-a" target="_blank" rel="noopener">{{ pod.title }}</a> 235 <p class="pod-p">{{ pod.description }}</p> 236 </div> 237 </div> 238 </div> 239 <a href="https://open.spotify.com" target="_blank" rel="noopener" class="pod-cta">
239Escuchar en Spotify â</a> 240 </div> 241 </div> 242 243 <div class="redes"> 244 <span class="redes-lbl">Seguinos</span> 245 <div class="redes-btns"> 246 <a href="https://api.whatsapp.com/send/?phone=543764361973" class="rbtn wa" target="_blank" rel="noopener"> 247 <svg viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg> 248 WhatsApp 249 </a> 250 <a href="https://www.facebook.com/ElShowdelosImpactos/" class="rbtn fb" target="_blank" rel="noopener"> 251 <svg viewBox="0 0 24 24"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg> 252 Facebook 253 </a> 254 <a href="https://www.instagram.com/elshowdelosimpactos/" class="rbtn ig" target="_blank" rel="noopener"> 255 <svg viewBox="0 0 24 24"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/></svg> 256 Instagram 257 </a> 258 <a href="https://www.youtube.com/@FMSHOW98.1" class="rbtn yt" target="_blank" rel="noopener"> 259 <svg viewBox="0 0 24 24"><path d="M23.495 6.205a3.007 3.007 0 00-2.088-2.088c-1.87-.501-9.396-.501-9.396-.501s-7.507-.01-9.396.501A3.007 3.007 0 00.527 6.205a31.247 31.247 0 00-.522 5.805 31.247 31.247 0 00.522 5.783 3.007 3.007 0 002.088 2.088c1.868.502 9.396.502 9.396.502s7.506 0 9.396-.502a3.007 3.007 0 002.088-2.088 31.247 31.247 0 00.5-5.783 31.247 31.247 0 00-.5-5.805zM9.609 15.601V8.408l6.264 3.602z"/></svg> 260 YouTube 261 </a> 262 </div> 263</div> 264 <footer> 265 266 <div class="foot-g"> 267 268 <div> 269 270 <div class="foot-brand-name">El Show de los Impactos</div> 271 272 <span class="foot-brand-sub">FM 98.1 · Posadas, Misiones</span> 273 274 <p class="foot-brand-p">Radio, noticias y entretenimiento desde el corazón de Misiones. Al aire todos los dÃas con la información local y regional que importa.</p> 275 276 </div> 277 278 <div class="foot-col"> 279 280 <div class="foot-col-h">Secciones</div> 281 282 <ul> 283 284 <li><a href="index.php?seccion=2">Policiales</a></li> 285 286 <li><a href="index.php?seccion=15">PolÃtica</a></li> 287 288 <li><a href="index.php?seccion=7">Deportes</a></li> 289 290 <li><a href="index.php?seccion=11">Generales</a></li> 291 292 <li><a href="index.php?seccion=10">EconomÃa</a></li> 293 294 <li><a href="index.php?seccion=16">Espectáculos</a></li> 295 296 </ul> 297 298 </div> 299 300 <div class="foot-col"> 301 302 <div class="foot-col-h">Contacto</div> 303 304 <ul> 305 306 <li><a href="mailto:[email protected]">[email protected]</a></li> 307 <li><a href="https://wa.me/543764101023">Linea Comercial 3764 101023</a></li> 308 <li><a href="https://wa.me/543764361973">WhatsApp 3764 361973</a></li> 309 <li><a href="#">Chacra 150 · Sección 18</a></li> 310 <li><a href="#">Villa Cabello, Posadas</a></li> 311 </ul> 312 313 </div> 314 315 </div> 316 317 <div class="foot-bottom"> 318 319 <span>© 2025 Agencia 1 Show · El Show de los Impactos · FM 98.1</span> 320 321 <span>Posadas · Misiones · Argentina</span> 322 323 </div> 324 325</footer> 326 327 328 <div v-if="busquedaAbierta" class="search-overlay" @click.self="cerrarBusqueda"> 329 <div class="search-box"> 330 <input 331 type="search" 332 v-model="terminoBusqueda" 333 placeholder="Buscar noticiasâ¦" 334 @keyup.enter="buscarNoticias" 335 ref="searchInput"> 336 <div class="search-results"> 337 <a 338 v-for="n in resultadosBusqueda" 339 :key="'s-' + n.id" 340 :href="urlNoticia(n.id)" 341 class="search-item">{{ n.titulo }}</a> 342 <p v-if="terminoBusqueda && !resultadosBusqueda.length && !buscando" class="loading-msg">Sin resultados</p> 343 </div> 344 <button type="button" class="search-close" @click="cerrarBusqueda">Cerrar</button> 345 </div> 346 </div> 347</div> 348
349<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
vendor: 1 bytes, line 349
349
350<script src="assets/app.js"></script>
vendor: 1 bytes, line 350
350
351<script> 352if (typeof window.ShowApp === 'undefined') { 353 console.error('No se cargó app.js desde assets/app.js'); 354} 355const initialVideoSrc = "https:\/\/www.youtube.com\/embed\/HJS4HvmEAwc"; 356const { createApp } = Vue; 357 358createApp({ 359 data() { 360 return { 361 navActive: 'inicio', 362 menuAbierto: false, 363 isPlaying: false, 364 videoSrc: initialVideoSrc, 365 destacada: null, 366 entrevistas: [], 367 noticias: [], 368 banners: [], 369 bannerDestacado: null, 370 tickerItems: [], 371 categorias: ShowApp.categorias(), 372 podcasts: ShowApp.podcasts(), 373 seccionActiva: 'inicio', 374 cargando: false, 375 pagina: 0, 376 porPagina: 20, 377 totalNoticias: 0, 378 placeholderSvg: ShowApp.placeholderSvg(), 379 busquedaAbierta: false, 380 terminoBusqueda: '', 381 resultadosBusqueda: [], 382 buscando: false, 383 }; 384 }, 385 computed: { 386 tickerDoble() { 387 return [...this.tickerItems, ...this.tickerItems]; 388 }, 389 noticiasGrid() { 390 const excluir = new Set(); 391 if (this.destacada) { 392 excluir.add(this.destacada.id); 393 } 394 this.entrevistas.forEach((e) => excluir.add(e.id)); 395 return this.noticias.filter((n) => !excluir.has(n.id)); 396 }, 397 gridBlocks() { 398 const blocks = []; 399 const list = this.noticiasGrid; 400 let bannerIdx = 0; 401 for (let i = 0; i < list.length; i += 4) { 402 const slice = list.slice(i, i + 4); 403 blocks.push({ type: 'grid', noticias: slice });
404 if (bannerIdx < this.banners.length) { 405 blocks.push({ 406 type: 'brow', 407 banners: [this.banners[bannerIdx] || null, this.banners[bannerIdx + 1] || null], 408 }); 409 bannerIdx += 2; 410 } 411 } 412 if (this.bannerDestacado && blocks.length) { 413 blocks.push({ type: 'bfull', banner: this.bannerDestacado }); 414 } 415 return blocks; 416 }, 417 hayMasNoticias() { 418 return this.noticias.length < this.totalNoticias; 419 }, 420 }, 421 methods: { 422 urlNoticia(id) { 423 return ShowApp.urlNoticia(id); 424 }, 425 tiempoRelativo(noticia) { 426 return ShowApp.tiempoRelativo(noticia.fecha_modificado_iso || noticia.fecha_publicacion_iso, noticia.fecha_publicacion); 427 }, 428 toggleAudio() { 429 this.isPlaying = ShowApp.toggleAudio(this.isPlaying); 430 }, 431 toggleMenu() { 432 this.menuAbierto = !this.menuAbierto; 433 }, 434 cerrarMenu() { 435 this.menuAbierto = false; 436 }, 437 navInicio() { 438 this.cerrarMenu(); 439 this.irInicio(); 440 }, 441 navScroll(id) { 442 this.cerrarMenu(); 443 this.scrollToId(id); 444 }, 445 navBuscar() { 446 this.cerrarMenu(); 447 this.abrirBusqueda(); 448 }, 449 scrollToId(id) { 450 ShowApp.scrollToId(id); 451 this.navActive = id === 'noticias-section' ? 'noticias' : this.navActive; 452 }, 453 irInicio() { 454 this.navActive = 'inicio'; 455 this.seccionActiva = 'inicio'; 456 this.pagina = 0; 457 window.location.href = 'index.php'; 458 }, 459 abrirBusqueda() { 460 this.busquedaAbierta = true; 461 this.$nextTick(() => { 462 if (this.$refs.searchInput) { 463 this.$refs.searchInput.focus(); 464 } 465 }); 466 }, 467 cerrarBusqueda() { 468 this.busquedaAbierta = false; 469 this.terminoBusqueda = ''; 470 this.resultadosBusqueda = []; 471 }, 472 async buscarNoticias() { 473 if (!this.terminoBusqueda.trim()) { 474 return; 475 } 476 this.buscando = true; 477 try { 478 const data = await ShowApp.fetchApi({ 479 accion: 'noticias', 480 buscar: this.terminoBusqueda.trim(), 481 por_pagina: 10, 482 }); 483 this.resultadosBusqueda = data.noticias || []; 484 } catch (e) { 485 console.error(e); 486 } finally { 487 this.buscando = false; 488 } 489 }, 490 async cargarDestacada() { 491 const data = await ShowApp.fetchApi({ accion: 'destacada' }); 492 this.destacada = data.noticia; 493 }, 494 async cargarEntrevistas() { 495 const data = await ShowApp.fetchApi({ accion: 'entrevistas', limite: 4 }); 496 this.entrevistas = data.entrevistas || []; 497 }, 498 async cargarTicker() { 499 const data = await ShowApp.fetchApi({ accion: 'ticker', limite: 8 }); 500 this.tickerItems = data.titulos || []; 501 }, 502 async cargarBanners() { 503 const data = await ShowApp.fetchApi({ accion: 'banners' }); 504 this.banners = data.banners || []; 505 this.bannerDestacado = data.destacado || null; 506 }, 507 async cargarNoticias(reset) { 508 if (reset) { 509 this.pagina = 0; 510 this.noticias = []; 511 } 512 this.cargando = true; 513 try { 514 const params = { 515 accion: 'noticias', 516 pagina: this.pagina, 517 por_pagina: this.porPagina, 518 }; 519 if (this.seccionActiva && this.seccionActiva !== 'todas') { 520 params.seccion = this.seccionActiva; 521 } 522 const data = await ShowApp.fetchApi(params); 523 const items = data.noticias || []; 524 this.totalNoticias = data.meta ? data.meta.total : items.length; 525 if (reset) { 526 this.noticias = items; 527 } else { 528 const ids = new Set(this.noticias.map((n) => n.id)); 529 items.forEach((n) => { 530 if (!ids.has(n.id)) { 531 this.noticias.push(n); 532 } 533 }); 534 } 535 } catch (e) { 536 console.error(e); 537 } finally { 538 this.cargando = false; 539 } 540 }, 541 async filtrarSeccion(id) { 542 this.seccionActiva = id; 543 this.navActive = id === 'inicio' ? 'inicio' : 'noticias'; 544 await this.cargarNoticias(true); 545 ShowApp.scrollToId('noticias-section'); 546 }, 547 async cargarMas() { 548 this.pagina += 1; 549 await this.cargarNoticias(false); 550 }, 551 onBannerError(e) { 552 e.target.parentElement.innerHTML = '<span class="bs-lbl">Publicidad</span>'; 553 }, 554 onBannerFullError(e) { 555 e.target.parentElement.innerHTML = '<span class="bfull-lbl">â Auspiciante Destacado â</span>'; 556 }, 557 initFromQuery() { 558 const params = new URLSearchParams(window.location.search); 559 const seccion = params.get('seccion'); 560 if (seccion) { 561 this.seccionActiva = seccion; 562 this.navActive = 'noticias'; 563 } 564 }, 565 }, 566 watch: { 567 terminoBusqueda(val) { 568 if (val.length >= 3) { 569 this.buscarNoticias(); 570 } else { 571 this.resultadosBusqueda = []; 572 } 573 }, 574 }, 575 async mounted() { 576 this.initFromQuery(); 577 const boot = document.getElementById('app-boot'); 578 if (boot) { 579 boot.remove(); 580 } 581 this.cargando = true; 582 try { 583 await Promise.all([ 584 this.cargarDestacada(), 585 this.cargarEntrevistas(), 586 this.cargarTicker(), 587 this.cargarBanners(), 588 this.cargarNoticias(true), 589 ]); 590 } finally { 591 this.cargando = false;
592 } 593 document.addEventListener('keydown', (e) => { 594 if (e.key === 'Escape') { 595 this.cerrarMenu(); 596 this.cerrarBusqueda(); 597 } 598 }); 599 }, 600}).mount('#app'); 601</script>
601 602</body> 603</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.