(function(){
/* La categoria madre ya no se usa aqui: la sabe el servidor
(mu-plugin rcg-portadas.php, RCG_PORTADAS_PADRE). */
var CLAVE = 'rcgPortadasV9'; /* v9: el mapa ahora viene del endpoint */
var mapa = null;
function ruta(u){
try { return new URL(u, location.href).pathname; } catch(e){ return u; }
}
/* El mapa se guarda en localStorage, no en sessionStorage: asi vale para
TODAS las pestanas del mismo lector y para su siguiente visita, en vez de
volver a pedirlo en cada una. Lo que protege de servir datos viejos no es
el tipo de almacen sino la VIGENCIA de abajo, que no cambia. */
/* El mapa se guarda CON SU HORA. Sin eso, una pestana abierta desde ayer
seguia usando el mapa de ayer: las portadas de hoy no estaban en el, no se
les cambiaba la imagen, y salia el recorte horizontal del tema, o sea
cortadas por abajo. */
var VIGENCIA = 10 * 60 * 1000;
function deCache(){
try {
var g = JSON.parse(localStorage.getItem(CLAVE) || 'null');
if(!g || !g.hora || !g.mapa) return null;
if(Date.now() - g.hora > VIGENCIA) return null;
return g.mapa;
} catch(e){ return null; }
}
function aCache(m){
try { localStorage.setItem(CLAVE, JSON.stringify({ hora: Date.now(), mapa: m })); } catch(e){}
}
/* UNA sola peticion, al endpoint propio (mu-plugin rcg-portadas.php).
Antes se armaba el mapa aqui con TRES llamadas a la API de WordPress
(categorias, entradas y medios). Cada una costaba entre 0.5 y 0.7
segundos de PHP y MariaDB, no pasaban por el cache de paginas, y como
el cache de abajo es de localStorage —o sea por pestana— cada
visitante nuevo las volvia a pedir. El 5 nov 2026 eso tenia al servidor
en carga 11.7 con ocho nucleos. Ahora el mapa se arma en el servidor una
vez cada diez minutos y se guarda en Redis. */
function datos(){
var c = deCache();
/* y si estamos viendo una portada que el mapa no trae, el mapa esta viejo
aunque no haya caducado: se rehace */
if(c && c[ruta(location.href)] === undefined &&
document.querySelector('article.category-portadas, article.category-impresa')) c = null;
if(c) return Promise.resolve(c);
return fetch('/wp-json/rcg/v1/portadas', { credentials:'same-origin' })
.then(function(r){ return r.json(); })
.then(function(m){
if(!m || typeof m !== 'object') return {};
aCache(m);
return m;
})
.catch(function(){ return {}; });
}
function poner(im, url, an, al, ampliable){
if(!im || !url) return;
if(im.getAttribute('data-rcg') === url) return;
im.setAttribute('data-rcg', url);
im.removeAttribute('srcset');
im.removeAttribute('sizes');
im.removeAttribute('loading');
if(an && al){
im.setAttribute('width', an);
im.setAttribute('height', al);
} else {
im.removeAttribute('width');
im.removeAttribute('height');
}
im.setAttribute('src', url);
im.style.aspectRatio = 'auto';
im.style.objectFit = 'fill';
im.style.height = 'auto';
im.style.background = '#ffffff';
if(ampliable && !im.getAttribute('data-rcg-zoom')){
im.setAttribute('data-rcg-zoom', '1');
im.style.cursor = 'zoom-in';
im.setAttribute('title', 'Clic para ver la portada a tamaño real');
im.addEventListener('click', function(ev){
var u = ev.currentTarget.getAttribute('src');
if(u) window.open(u, '_blank', 'noopener');
});
}
}
function claveDe(im){
var a = im.closest('a[href]');
if(a) return ruta(a.getAttribute('href'));
var art = im.closest('article');
if(art){
var t = art.querySelector('.entry-title a, .post-title a');
if(t) return ruta(t.getAttribute('href'));
}
return null;
}
function aplicar(m){
if(!m) return;
document.querySelectorAll('#main-content img, .rcg-impresa-fila img').forEach(function(im){
if(im.closest('.rcg-impresa-actual')) return;
if(im.closest('article.category-portadas .post-content')) return;
if(im.closest('article.category-impresa .post-content')) return;
var k = claveDe(im), d;
if(k && (d = m[k])) poner(im, d.ligera, d.lw, d.lh, false);
});
document.querySelectorAll('.rcg-impresa-actual img').forEach(function(im){
var k = claveDe(im), d;
if(k && (d = m[k])) poner(im, d.completa, d.cw, d.ch, false);
});
document.querySelectorAll(
'article.category-portadas .post-content img, article.category-impresa .post-content img'
).forEach(function(im){
/* Una portada puede traer varias paginas. Antes se le ponia a TODAS la
imagen destacada, asi que la pagina 2 salia siendo la 1 y la segunda no
aparecia nunca. Ahora cada imagen se lleva a su propio tamano completo,
quitandole el sufijo -anchoxalto del nombre. */
var k = ruta(location.href), d = m[k];
var src = im.getAttribute('src') || '';
var full = src.replace(/-d+xd+(.[a-z]+)$/i, '$1');
var esLaDestacada = d && d.completa &&
d.completa.split('/').pop() === full.split('/').pop();
if(esLaDestacada) poner(im, d.completa, d.cw, d.ch, true);
else poner(im, full, 0, 0, true);
var fig = im.closest('figure');
if(fig){ fig.style.maxWidth = '820px'; fig.style.margin = '22px auto'; }
});
var ti = document.querySelector('article.category-portadas .entry-title, article.category-impresa .entry-title');
if(ti){
ti.style.setProperty('font-size', '25px', 'important');
ti.style.setProperty('line-height', '1.2', 'important');
}
document.querySelectorAll(
'article.category-portadas .post-thumbnail, article.category-impresa .post-thumbnail'
).forEach(function(t){ t.remove(); });
document.querySelectorAll('#et-trending a[href]').forEach(function(a){
if(m[ruta(a.getAttribute('href'))]){
var item = a.closest('.et-trending-post') || a.closest('li') || a.closest('article');
if(item) item.remove();
}
});
}
function correr(){
if(mapa){ aplicar(mapa); return; }
datos().then(function(m){ mapa = m; aplicar(m); });
}
function iniciarPortadas(){
correr();
/* La navegación sin recarga reemplaza el contenido: se vuelve a aplicar */
var area = document.getElementById('main-content');
if(area && window.MutationObserver){
new MutationObserver(function(){ correr(); }).observe(area, { childList:true, subtree:true });
}
}
/* Este bloque ahora lo imprime el plugin de CSS y JS por encima del
contenido (a veces dentro del
), así que hay que esperar a que
el documento exista. Sin esto no encuentra ninguna portada. */
if(document.readyState === 'loading'){
document.addEventListener('DOMContentLoaded', iniciarPortadas);
} else {
iniciarPortadas();
}
})();
Saltillo.- Un hombre de 31 años terminó con heridas de consideración, luego de sufrir un fuerte accidente automovilístico este sábado sobre el bulevar José María Rodríguez.
De acuerdo con el peritaje realizado por oficiales de tránsito, el conductor de un Ford Mustang perdió el control del vehículo debido al exceso de velocidad. Al transitar cerca de la colonia Portal de Aragón, el automovilista subió al camellón central, impactó un señalamiento metálico de tránsito y finalmente chocó contra una palma.
Testigos que presenciaron el incidente llamaron de inmediato al número de emergencias 911, por lo que paramédicos de Cruz Roja Saltillo llegaron al lugar para atender al afectado.
El hombre presentó lesiones graves en el tórax y golpes considerables en la cabeza, por lo que fue trasladado de urgencia a un hospital privado para recibir atención especializada.
Por su parte, el vehículo deportivo presentó daños importantes en la parte frontal y fue retirado del lugar mediante una grúa para ser llevado a un corralón.