Widget de Noticias RSS
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.news-widget {
width: 100%;
max-width: 800px;
background-color: white;
border-radius: 12px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
}
.widget-header {
background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%);
color: white;
padding: 20px;
text-align: center;
position: relative;
}
.widget-header h2 {
font-size: 1.8rem;
font-weight: 600;
margin-bottom: 5px;
}
.widget-header p {
opacity: 0.9;
font-size: 0.95rem;
}
.rss-icon {
position: absolute;
top: 20px;
right: 20px;
width: 24px;
height: 24px;
background-color: #ff6600;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 12px;
font-weight: bold;
}
.news-list {
padding: 0;
}
.news-item {
display: flex;
padding: 18px 20px;
border-bottom: 1px solid #f0f0f0;
transition: all 0.3s ease;
cursor: pointer;
width: 100%;
}
.news-item:hover {
background-color: #f8fafc;
transform: translateX(5px);
}
.news-item:last-child {
border-bottom: none;
}
.news-number {
display: flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
background-color: #3498db;
color: white;
border-radius: 50%;
font-weight: bold;
margin-right: 15px;
flex-shrink: 0;
}
.news-content {
flex: 1;
width: calc(100% - 45px);
}
.news-title {
font-size: 1.1rem;
font-weight: 600;
color: #2c3e50;
margin-bottom: 5px;
line-height: 1.4;
width: 100%;
word-wrap: break-word;
}
.news-date {
font-size: 0.85rem;
color: #7f8c8d;
width: 100%;
}
.external-link {
color: #3498db;
font-size: 0.9rem;
margin-top: 5px;
display: inline-block;
}
.widget-footer {
padding: 15px 20px;
text-align: center;
background-color: #f8fafc;
border-top: 1px solid #e1e5e9;
color: #7f8c8d;
font-size: 0.9rem;
}
.loading {
padding: 40px 20px;
text-align: center;
color: #7f8c8d;
}
.error {
padding: 40px 20px;
text-align: center;
color: #e74c3c;
background-color: #fdf2f2;
}
@media (max-width: 600px) {
.news-item {
flex-direction: column;
}
.news-number {
margin-bottom: 10px;
}
.widget-header h2 {
font-size: 1.5rem;
}
}
document.addEventListener('DOMContentLoaded', function() {
const rssUrl = 'https://www.noticiasdealmeria.com/rss/ultimasNoticias/';
const newsList = document.getElementById('newsList');
// Datos de ejemplo para mostrar el diseño (en caso de que el RSS no funcione)
const sampleNews = [
{
title: 'El Ayuntamiento anuncia nuevas medidas para mejorar el tráfico en el centro',
link: '#',
date: '12 de noviembre de 2025'
},
{
title: 'Inaugurado el nuevo parque empresarial con más de 50 empresas',
link: '#',
date: '11 de noviembre de 2025'
},
{
title: 'La Universidad presenta su plan de expansión para el próximo año',
link: '#',
date: '10 de noviembre de 2025'
},
{
title: 'Celebración del festival gastronómico con participantes internacionales',
link: '#',
date: '9 de noviembre de 2025'
},
{
title: 'Nuevo proyecto de sostenibilidad para proteger las zonas naturales',
link: '#',
date: '8 de noviembre de 2025'
}
];
// Función para mostrar noticias de ejemplo
function displaySampleNews() {
newsList.innerHTML = '';
sampleNews.forEach((news, index) => {
const newsItem = document.createElement('div');
newsItem.className = 'news-item';
newsItem.onclick = () => window.open(news.link, '_blank');
newsItem.innerHTML = `
${index + 1}
${news.title}
${news.date}
Leer más ?
`;
newsList.appendChild(newsItem);
});
}
// Función para obtener y parsear el RSS
async function fetchRSS() {
try {
// Usamos un proxy CORS para evitar problemas de same-origin policy
const proxyUrl = 'https://api.allorigins.win/raw?url=';
const response = await fetch(proxyUrl + encodeURIComponent(rssUrl));
if (!response.ok) {
throw new Error('Error al cargar el feed RSS');
}
const text = await response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(text, 'text/xml');
// Verificar si el parseo fue exitoso
if (xmlDoc.getElementsByTagName('parsererror').length > 0) {
throw new Error('Error al parsear el XML');
}
// Obtener los elementos item del RSS
const items = xmlDoc.getElementsByTagName('item');
// Limpiar el contenido de carga
newsList.innerHTML = '';
// Mostrar las primeras 5 noticias
const maxItems = Math.min(items.length, 5);
if (maxItems === 0) {
newsList.innerHTML = '
No se encontraron noticias en el feed RSS.';
return;
}
for (let i = 0; i < maxItems; i++) {
const item = items[i];
const title = item.getElementsByTagName('title')[0]?.textContent || 'Título no disponible';
const link = item.getElementsByTagName('link')[0]?.textContent || '#';
const pubDate = item.getElementsByTagName('pubDate')[0]?.textContent || '';
const newsItem = document.createElement('div');
newsItem.className = 'news-item';
newsItem.onclick = () => window.open(link, '_blank');
// Formatear la fecha
let formattedDate = '';
if (pubDate) {
const date = new Date(pubDate);
formattedDate = date.toLocaleDateString('es-ES', {
day: 'numeric',
month: 'long',
year: 'numeric'
});
}
newsItem.innerHTML = `
${i + 1}
${title}
${formattedDate ? `
${formattedDate}` : ''}
Leer más ?
`;
newsList.appendChild(newsItem);
}
} catch (error) {
console.error('Error:', error);
// En caso de error, mostrar noticias de ejemplo
displaySampleNews();
// Mostrar mensaje de error
const errorMsg = document.createElement('div');
errorMsg.className = 'error';
errorMsg.innerHTML = `
Error al cargar las noticias en tiempo real: ${error.message}
Se muestran noticias de ejemplo. Intenta recargar la página.
`;
newsList.insertBefore(errorMsg, newsList.firstChild);
}
}
// Cargar las noticias al iniciar
fetchRSS();
// Actualizar cada 10 minutos (opcional)
setInterval(fetchRSS, 10 * 60 * 1000);
});
Los bomberos actuaron con rapidez y eficacia para evitar lo que podría haber sido una tragedia. La campana, parte integral de la Iglesia de la Anunciación, representaba no solo un elemento arquitectónico significativo, sino también un símbolo cultural para la comunidad local. Su caída podría haber causado daños importantes tanto a la estructura como a las personas que se encontraban en las cercanías.
Intervención y Seguridad
Widget de Noticias RSS
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.news-widget {
width: 100%;
max-width: 800px;
background-color: white;
border-radius: 12px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
}
.widget-header {
background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%);
color: white;
padding: 20px;
text-align: center;
position: relative;
}
.widget-header h2 {
font-size: 1.8rem;
font-weight: 600;
margin-bottom: 5px;
}
.widget-header p {
opacity: 0.9;
font-size: 0.95rem;
}
.rss-icon {
position: absolute;
top: 20px;
right: 20px;
width: 24px;
height: 24px;
background-color: #ff6600;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 12px;
font-weight: bold;
}
.news-list {
padding: 0;
}
.news-item {
display: flex;
padding: 18px 20px;
border-bottom: 1px solid #f0f0f0;
transition: all 0.3s ease;
cursor: pointer;
width: 100%;
}
.news-item:hover {
background-color: #f8fafc;
transform: translateX(5px);
}
.news-item:last-child {
border-bottom: none;
}
.news-number {
display: flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
background-color: #3498db;
color: white;
border-radius: 50%;
font-weight: bold;
margin-right: 15px;
flex-shrink: 0;
}
.news-content {
flex: 1;
width: calc(100% - 45px);
}
.news-title {
font-size: 1.1rem;
font-weight: 600;
color: #2c3e50;
margin-bottom: 5px;
line-height: 1.4;
width: 100%;
word-wrap: break-word;
}
.news-date {
font-size: 0.85rem;
color: #7f8c8d;
width: 100%;
}
.external-link {
color: #3498db;
font-size: 0.9rem;
margin-top: 5px;
display: inline-block;
}
.widget-footer {
padding: 15px 20px;
text-align: center;
background-color: #f8fafc;
border-top: 1px solid #e1e5e9;
color: #7f8c8d;
font-size: 0.9rem;
}
.loading {
padding: 40px 20px;
text-align: center;
color: #7f8c8d;
}
.error {
padding: 40px 20px;
text-align: center;
color: #e74c3c;
background-color: #fdf2f2;
}
@media (max-width: 600px) {
.news-item {
flex-direction: column;
}
.news-number {
margin-bottom: 10px;
}
.widget-header h2 {
font-size: 1.5rem;
}
}
document.addEventListener('DOMContentLoaded', function() {
const rssUrl = 'https://www.noticiasdealmeria.com/rss/ultimasNoticias/';
const newsList = document.getElementById('newsList');
// Datos de ejemplo para mostrar el diseño (en caso de que el RSS no funcione)
const sampleNews = [
{
title: 'El Ayuntamiento anuncia nuevas medidas para mejorar el tráfico en el centro',
link: '#',
date: '12 de noviembre de 2025'
},
{
title: 'Inaugurado el nuevo parque empresarial con más de 50 empresas',
link: '#',
date: '11 de noviembre de 2025'
},
{
title: 'La Universidad presenta su plan de expansión para el próximo año',
link: '#',
date: '10 de noviembre de 2025'
},
{
title: 'Celebración del festival gastronómico con participantes internacionales',
link: '#',
date: '9 de noviembre de 2025'
},
{
title: 'Nuevo proyecto de sostenibilidad para proteger las zonas naturales',
link: '#',
date: '8 de noviembre de 2025'
}
];
// Función para mostrar noticias de ejemplo
function displaySampleNews() {
newsList.innerHTML = '';
sampleNews.forEach((news, index) => {
const newsItem = document.createElement('div');
newsItem.className = 'news-item';
newsItem.onclick = () => window.open(news.link, '_blank');
newsItem.innerHTML = `
${index + 1}
${news.title}
${news.date}
Leer más ?
`;
newsList.appendChild(newsItem);
});
}
// Función para obtener y parsear el RSS
async function fetchRSS() {
try {
// Usamos un proxy CORS para evitar problemas de same-origin policy
const proxyUrl = 'https://api.allorigins.win/raw?url=';
const response = await fetch(proxyUrl + encodeURIComponent(rssUrl));
if (!response.ok) {
throw new Error('Error al cargar el feed RSS');
}
const text = await response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(text, 'text/xml');
// Verificar si el parseo fue exitoso
if (xmlDoc.getElementsByTagName('parsererror').length > 0) {
throw new Error('Error al parsear el XML');
}
// Obtener los elementos item del RSS
const items = xmlDoc.getElementsByTagName('item');
// Limpiar el contenido de carga
newsList.innerHTML = '';
// Mostrar las primeras 5 noticias
const maxItems = Math.min(items.length, 5);
if (maxItems === 0) {
newsList.innerHTML = '
No se encontraron noticias en el feed RSS.';
return;
}
for (let i = 0; i < maxItems; i++) {
const item = items[i];
const title = item.getElementsByTagName('title')[0]?.textContent || 'Título no disponible';
const link = item.getElementsByTagName('link')[0]?.textContent || '#';
const pubDate = item.getElementsByTagName('pubDate')[0]?.textContent || '';
const newsItem = document.createElement('div');
newsItem.className = 'news-item';
newsItem.onclick = () => window.open(link, '_blank');
// Formatear la fecha
let formattedDate = '';
if (pubDate) {
const date = new Date(pubDate);
formattedDate = date.toLocaleDateString('es-ES', {
day: 'numeric',
month: 'long',
year: 'numeric'
});
}
newsItem.innerHTML = `
${i + 1}
${title}
${formattedDate ? `
${formattedDate}` : ''}
Leer más ?
`;
newsList.appendChild(newsItem);
}
} catch (error) {
console.error('Error:', error);
// En caso de error, mostrar noticias de ejemplo
displaySampleNews();
// Mostrar mensaje de error
const errorMsg = document.createElement('div');
errorMsg.className = 'error';
errorMsg.innerHTML = `
Error al cargar las noticias en tiempo real: ${error.message}
Se muestran noticias de ejemplo. Intenta recargar la página.
`;
newsList.insertBefore(errorMsg, newsList.firstChild);
}
}
// Cargar las noticias al iniciar
fetchRSS();
// Actualizar cada 10 minutos (opcional)
setInterval(fetchRSS, 10 * 60 * 1000);
});
El trabajo realizado por los bomberos incluyó una evaluación detallada de la situación y el uso de técnicas especializadas para asegurar la campana adecuadamente. Esto demuestra la importancia de contar con personal capacitado para manejar situaciones de riesgo en edificaciones históricas.
Widget de Noticias RSS
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.news-widget {
width: 100%;
max-width: 800px;
background-color: white;
border-radius: 12px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
}
.widget-header {
background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%);
color: white;
padding: 20px;
text-align: center;
position: relative;
}
.widget-header h2 {
font-size: 1.8rem;
font-weight: 600;
margin-bottom: 5px;
}
.widget-header p {
opacity: 0.9;
font-size: 0.95rem;
}
.rss-icon {
position: absolute;
top: 20px;
right: 20px;
width: 24px;
height: 24px;
background-color: #ff6600;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 12px;
font-weight: bold;
}
.news-list {
padding: 0;
}
.news-item {
display: flex;
padding: 18px 20px;
border-bottom: 1px solid #f0f0f0;
transition: all 0.3s ease;
cursor: pointer;
width: 100%;
}
.news-item:hover {
background-color: #f8fafc;
transform: translateX(5px);
}
.news-item:last-child {
border-bottom: none;
}
.news-number {
display: flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
background-color: #3498db;
color: white;
border-radius: 50%;
font-weight: bold;
margin-right: 15px;
flex-shrink: 0;
}
.news-content {
flex: 1;
width: calc(100% - 45px);
}
.news-title {
font-size: 1.1rem;
font-weight: 600;
color: #2c3e50;
margin-bottom: 5px;
line-height: 1.4;
width: 100%;
word-wrap: break-word;
}
.news-date {
font-size: 0.85rem;
color: #7f8c8d;
width: 100%;
}
.external-link {
color: #3498db;
font-size: 0.9rem;
margin-top: 5px;
display: inline-block;
}
.widget-footer {
padding: 15px 20px;
text-align: center;
background-color: #f8fafc;
border-top: 1px solid #e1e5e9;
color: #7f8c8d;
font-size: 0.9rem;
}
.loading {
padding: 40px 20px;
text-align: center;
color: #7f8c8d;
}
.error {
padding: 40px 20px;
text-align: center;
color: #e74c3c;
background-color: #fdf2f2;
}
@media (max-width: 600px) {
.news-item {
flex-direction: column;
}
.news-number {
margin-bottom: 10px;
}
.widget-header h2 {
font-size: 1.5rem;
}
}
document.addEventListener('DOMContentLoaded', function() {
const rssUrl = 'https://www.noticiasdealmeria.com/rss/ultimasNoticias/';
const newsList = document.getElementById('newsList');
// Datos de ejemplo para mostrar el diseño (en caso de que el RSS no funcione)
const sampleNews = [
{
title: 'El Ayuntamiento anuncia nuevas medidas para mejorar el tráfico en el centro',
link: '#',
date: '12 de noviembre de 2025'
},
{
title: 'Inaugurado el nuevo parque empresarial con más de 50 empresas',
link: '#',
date: '11 de noviembre de 2025'
},
{
title: 'La Universidad presenta su plan de expansión para el próximo año',
link: '#',
date: '10 de noviembre de 2025'
},
{
title: 'Celebración del festival gastronómico con participantes internacionales',
link: '#',
date: '9 de noviembre de 2025'
},
{
title: 'Nuevo proyecto de sostenibilidad para proteger las zonas naturales',
link: '#',
date: '8 de noviembre de 2025'
}
];
// Función para mostrar noticias de ejemplo
function displaySampleNews() {
newsList.innerHTML = '';
sampleNews.forEach((news, index) => {
const newsItem = document.createElement('div');
newsItem.className = 'news-item';
newsItem.onclick = () => window.open(news.link, '_blank');
newsItem.innerHTML = `
${index + 1}
${news.title}
${news.date}
Leer más ?
`;
newsList.appendChild(newsItem);
});
}
// Función para obtener y parsear el RSS
async function fetchRSS() {
try {
// Usamos un proxy CORS para evitar problemas de same-origin policy
const proxyUrl = 'https://api.allorigins.win/raw?url=';
const response = await fetch(proxyUrl + encodeURIComponent(rssUrl));
if (!response.ok) {
throw new Error('Error al cargar el feed RSS');
}
const text = await response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(text, 'text/xml');
// Verificar si el parseo fue exitoso
if (xmlDoc.getElementsByTagName('parsererror').length > 0) {
throw new Error('Error al parsear el XML');
}
// Obtener los elementos item del RSS
const items = xmlDoc.getElementsByTagName('item');
// Limpiar el contenido de carga
newsList.innerHTML = '';
// Mostrar las primeras 5 noticias
const maxItems = Math.min(items.length, 5);
if (maxItems === 0) {
newsList.innerHTML = '
No se encontraron noticias en el feed RSS.';
return;
}
for (let i = 0; i < maxItems; i++) {
const item = items[i];
const title = item.getElementsByTagName('title')[0]?.textContent || 'Título no disponible';
const link = item.getElementsByTagName('link')[0]?.textContent || '#';
const pubDate = item.getElementsByTagName('pubDate')[0]?.textContent || '';
const newsItem = document.createElement('div');
newsItem.className = 'news-item';
newsItem.onclick = () => window.open(link, '_blank');
// Formatear la fecha
let formattedDate = '';
if (pubDate) {
const date = new Date(pubDate);
formattedDate = date.toLocaleDateString('es-ES', {
day: 'numeric',
month: 'long',
year: 'numeric'
});
}
newsItem.innerHTML = `
${i + 1}
${title}
${formattedDate ? `
${formattedDate}` : ''}
Leer más ?
`;
newsList.appendChild(newsItem);
}
} catch (error) {
console.error('Error:', error);
// En caso de error, mostrar noticias de ejemplo
displaySampleNews();
// Mostrar mensaje de error
const errorMsg = document.createElement('div');
errorMsg.className = 'error';
errorMsg.innerHTML = `
Error al cargar las noticias en tiempo real: ${error.message}
Se muestran noticias de ejemplo. Intenta recargar la página.
`;
newsList.insertBefore(errorMsg, newsList.firstChild);
}
}
// Cargar las noticias al iniciar
fetchRSS();
// Actualizar cada 10 minutos (opcional)
setInterval(fetchRSS, 10 * 60 * 1000);
});
Además, este tipo de intervenciones subraya la necesidad de mantener en buen estado los elementos patrimoniales, así como garantizar la seguridad pública. Las autoridades locales han expresado su agradecimiento por la pronta respuesta del equipo de bomberos, resaltando su compromiso con la protección del patrimonio cultural y la seguridad ciudadana.
Conclusiones sobre el Patrimonio Cultural
Widget de Noticias RSS
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.news-widget {
width: 100%;
max-width: 800px;
background-color: white;
border-radius: 12px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
}
.widget-header {
background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%);
color: white;
padding: 20px;
text-align: center;
position: relative;
}
.widget-header h2 {
font-size: 1.8rem;
font-weight: 600;
margin-bottom: 5px;
}
.widget-header p {
opacity: 0.9;
font-size: 0.95rem;
}
.rss-icon {
position: absolute;
top: 20px;
right: 20px;
width: 24px;
height: 24px;
background-color: #ff6600;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 12px;
font-weight: bold;
}
.news-list {
padding: 0;
}
.news-item {
display: flex;
padding: 18px 20px;
border-bottom: 1px solid #f0f0f0;
transition: all 0.3s ease;
cursor: pointer;
width: 100%;
}
.news-item:hover {
background-color: #f8fafc;
transform: translateX(5px);
}
.news-item:last-child {
border-bottom: none;
}
.news-number {
display: flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
background-color: #3498db;
color: white;
border-radius: 50%;
font-weight: bold;
margin-right: 15px;
flex-shrink: 0;
}
.news-content {
flex: 1;
width: calc(100% - 45px);
}
.news-title {
font-size: 1.1rem;
font-weight: 600;
color: #2c3e50;
margin-bottom: 5px;
line-height: 1.4;
width: 100%;
word-wrap: break-word;
}
.news-date {
font-size: 0.85rem;
color: #7f8c8d;
width: 100%;
}
.external-link {
color: #3498db;
font-size: 0.9rem;
margin-top: 5px;
display: inline-block;
}
.widget-footer {
padding: 15px 20px;
text-align: center;
background-color: #f8fafc;
border-top: 1px solid #e1e5e9;
color: #7f8c8d;
font-size: 0.9rem;
}
.loading {
padding: 40px 20px;
text-align: center;
color: #7f8c8d;
}
.error {
padding: 40px 20px;
text-align: center;
color: #e74c3c;
background-color: #fdf2f2;
}
@media (max-width: 600px) {
.news-item {
flex-direction: column;
}
.news-number {
margin-bottom: 10px;
}
.widget-header h2 {
font-size: 1.5rem;
}
}
document.addEventListener('DOMContentLoaded', function() {
const rssUrl = 'https://www.noticiasdealmeria.com/rss/ultimasNoticias/';
const newsList = document.getElementById('newsList');
// Datos de ejemplo para mostrar el diseño (en caso de que el RSS no funcione)
const sampleNews = [
{
title: 'El Ayuntamiento anuncia nuevas medidas para mejorar el tráfico en el centro',
link: '#',
date: '12 de noviembre de 2025'
},
{
title: 'Inaugurado el nuevo parque empresarial con más de 50 empresas',
link: '#',
date: '11 de noviembre de 2025'
},
{
title: 'La Universidad presenta su plan de expansión para el próximo año',
link: '#',
date: '10 de noviembre de 2025'
},
{
title: 'Celebración del festival gastronómico con participantes internacionales',
link: '#',
date: '9 de noviembre de 2025'
},
{
title: 'Nuevo proyecto de sostenibilidad para proteger las zonas naturales',
link: '#',
date: '8 de noviembre de 2025'
}
];
// Función para mostrar noticias de ejemplo
function displaySampleNews() {
newsList.innerHTML = '';
sampleNews.forEach((news, index) => {
const newsItem = document.createElement('div');
newsItem.className = 'news-item';
newsItem.onclick = () => window.open(news.link, '_blank');
newsItem.innerHTML = `
${index + 1}
${news.title}
${news.date}
Leer más ?
`;
newsList.appendChild(newsItem);
});
}
// Función para obtener y parsear el RSS
async function fetchRSS() {
try {
// Usamos un proxy CORS para evitar problemas de same-origin policy
const proxyUrl = 'https://api.allorigins.win/raw?url=';
const response = await fetch(proxyUrl + encodeURIComponent(rssUrl));
if (!response.ok) {
throw new Error('Error al cargar el feed RSS');
}
const text = await response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(text, 'text/xml');
// Verificar si el parseo fue exitoso
if (xmlDoc.getElementsByTagName('parsererror').length > 0) {
throw new Error('Error al parsear el XML');
}
// Obtener los elementos item del RSS
const items = xmlDoc.getElementsByTagName('item');
// Limpiar el contenido de carga
newsList.innerHTML = '';
// Mostrar las primeras 5 noticias
const maxItems = Math.min(items.length, 5);
if (maxItems === 0) {
newsList.innerHTML = '
No se encontraron noticias en el feed RSS.';
return;
}
for (let i = 0; i < maxItems; i++) {
const item = items[i];
const title = item.getElementsByTagName('title')[0]?.textContent || 'Título no disponible';
const link = item.getElementsByTagName('link')[0]?.textContent || '#';
const pubDate = item.getElementsByTagName('pubDate')[0]?.textContent || '';
const newsItem = document.createElement('div');
newsItem.className = 'news-item';
newsItem.onclick = () => window.open(link, '_blank');
// Formatear la fecha
let formattedDate = '';
if (pubDate) {
const date = new Date(pubDate);
formattedDate = date.toLocaleDateString('es-ES', {
day: 'numeric',
month: 'long',
year: 'numeric'
});
}
newsItem.innerHTML = `
${i + 1}
${title}
${formattedDate ? `
${formattedDate}` : ''}
Leer más ?
`;
newsList.appendChild(newsItem);
}
} catch (error) {
console.error('Error:', error);
// En caso de error, mostrar noticias de ejemplo
displaySampleNews();
// Mostrar mensaje de error
const errorMsg = document.createElement('div');
errorMsg.className = 'error';
errorMsg.innerHTML = `
Error al cargar las noticias en tiempo real: ${error.message}
Se muestran noticias de ejemplo. Intenta recargar la página.
`;
newsList.insertBefore(errorMsg, newsList.firstChild);
}
}
// Cargar las noticias al iniciar
fetchRSS();
// Actualizar cada 10 minutos (opcional)
setInterval(fetchRSS, 10 * 60 * 1000);
});
La preservación del patrimonio histórico es fundamental no solo para mantener viva la historia de una comunidad, sino también para proteger a sus habitantes. La acción preventiva llevada a cabo en este caso es un ejemplo claro de cómo se pueden evitar incidentes graves mediante una adecuada gestión y atención a los riesgos asociados con estructuras antiguas.
Widget de Noticias RSS
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.news-widget {
width: 100%;
max-width: 800px;
background-color: white;
border-radius: 12px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
}
.widget-header {
background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%);
color: white;
padding: 20px;
text-align: center;
position: relative;
}
.widget-header h2 {
font-size: 1.8rem;
font-weight: 600;
margin-bottom: 5px;
}
.widget-header p {
opacity: 0.9;
font-size: 0.95rem;
}
.rss-icon {
position: absolute;
top: 20px;
right: 20px;
width: 24px;
height: 24px;
background-color: #ff6600;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 12px;
font-weight: bold;
}
.news-list {
padding: 0;
}
.news-item {
display: flex;
padding: 18px 20px;
border-bottom: 1px solid #f0f0f0;
transition: all 0.3s ease;
cursor: pointer;
width: 100%;
}
.news-item:hover {
background-color: #f8fafc;
transform: translateX(5px);
}
.news-item:last-child {
border-bottom: none;
}
.news-number {
display: flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
background-color: #3498db;
color: white;
border-radius: 50%;
font-weight: bold;
margin-right: 15px;
flex-shrink: 0;
}
.news-content {
flex: 1;
width: calc(100% - 45px);
}
.news-title {
font-size: 1.1rem;
font-weight: 600;
color: #2c3e50;
margin-bottom: 5px;
line-height: 1.4;
width: 100%;
word-wrap: break-word;
}
.news-date {
font-size: 0.85rem;
color: #7f8c8d;
width: 100%;
}
.external-link {
color: #3498db;
font-size: 0.9rem;
margin-top: 5px;
display: inline-block;
}
.widget-footer {
padding: 15px 20px;
text-align: center;
background-color: #f8fafc;
border-top: 1px solid #e1e5e9;
color: #7f8c8d;
font-size: 0.9rem;
}
.loading {
padding: 40px 20px;
text-align: center;
color: #7f8c8d;
}
.error {
padding: 40px 20px;
text-align: center;
color: #e74c3c;
background-color: #fdf2f2;
}
@media (max-width: 600px) {
.news-item {
flex-direction: column;
}
.news-number {
margin-bottom: 10px;
}
.widget-header h2 {
font-size: 1.5rem;
}
}
document.addEventListener('DOMContentLoaded', function() {
const rssUrl = 'https://www.noticiasdealmeria.com/rss/ultimasNoticias/';
const newsList = document.getElementById('newsList');
// Datos de ejemplo para mostrar el diseño (en caso de que el RSS no funcione)
const sampleNews = [
{
title: 'El Ayuntamiento anuncia nuevas medidas para mejorar el tráfico en el centro',
link: '#',
date: '12 de noviembre de 2025'
},
{
title: 'Inaugurado el nuevo parque empresarial con más de 50 empresas',
link: '#',
date: '11 de noviembre de 2025'
},
{
title: 'La Universidad presenta su plan de expansión para el próximo año',
link: '#',
date: '10 de noviembre de 2025'
},
{
title: 'Celebración del festival gastronómico con participantes internacionales',
link: '#',
date: '9 de noviembre de 2025'
},
{
title: 'Nuevo proyecto de sostenibilidad para proteger las zonas naturales',
link: '#',
date: '8 de noviembre de 2025'
}
];
// Función para mostrar noticias de ejemplo
function displaySampleNews() {
newsList.innerHTML = '';
sampleNews.forEach((news, index) => {
const newsItem = document.createElement('div');
newsItem.className = 'news-item';
newsItem.onclick = () => window.open(news.link, '_blank');
newsItem.innerHTML = `
${index + 1}
${news.title}
${news.date}
Leer más ?
`;
newsList.appendChild(newsItem);
});
}
// Función para obtener y parsear el RSS
async function fetchRSS() {
try {
// Usamos un proxy CORS para evitar problemas de same-origin policy
const proxyUrl = 'https://api.allorigins.win/raw?url=';
const response = await fetch(proxyUrl + encodeURIComponent(rssUrl));
if (!response.ok) {
throw new Error('Error al cargar el feed RSS');
}
const text = await response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(text, 'text/xml');
// Verificar si el parseo fue exitoso
if (xmlDoc.getElementsByTagName('parsererror').length > 0) {
throw new Error('Error al parsear el XML');
}
// Obtener los elementos item del RSS
const items = xmlDoc.getElementsByTagName('item');
// Limpiar el contenido de carga
newsList.innerHTML = '';
// Mostrar las primeras 5 noticias
const maxItems = Math.min(items.length, 5);
if (maxItems === 0) {
newsList.innerHTML = '
No se encontraron noticias en el feed RSS.';
return;
}
for (let i = 0; i < maxItems; i++) {
const item = items[i];
const title = item.getElementsByTagName('title')[0]?.textContent || 'Título no disponible';
const link = item.getElementsByTagName('link')[0]?.textContent || '#';
const pubDate = item.getElementsByTagName('pubDate')[0]?.textContent || '';
const newsItem = document.createElement('div');
newsItem.className = 'news-item';
newsItem.onclick = () => window.open(link, '_blank');
// Formatear la fecha
let formattedDate = '';
if (pubDate) {
const date = new Date(pubDate);
formattedDate = date.toLocaleDateString('es-ES', {
day: 'numeric',
month: 'long',
year: 'numeric'
});
}
newsItem.innerHTML = `
${i + 1}
${title}
${formattedDate ? `
${formattedDate}` : ''}
Leer más ?
`;
newsList.appendChild(newsItem);
}
} catch (error) {
console.error('Error:', error);
// En caso de error, mostrar noticias de ejemplo
displaySampleNews();
// Mostrar mensaje de error
const errorMsg = document.createElement('div');
errorMsg.className = 'error';
errorMsg.innerHTML = `
Error al cargar las noticias en tiempo real: ${error.message}
Se muestran noticias de ejemplo. Intenta recargar la página.
`;
newsList.insertBefore(errorMsg, newsList.firstChild);
}
}
// Cargar las noticias al iniciar
fetchRSS();
// Actualizar cada 10 minutos (opcional)
setInterval(fetchRSS, 10 * 60 * 1000);
});
En resumen, gracias al esfuerzo conjunto y profesionalismo de los bomberos, se ha logrado evitar un incidente que podría haber tenido consecuencias severas. Este hecho pone de manifiesto la importancia del trabajo en equipo y la preparación ante situaciones inesperadas relacionadas con el patrimonio cultural.
TEMAS RELACIONADOS: