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 concejal de Urbanismo, José Luis Llamas, ha explicado que en los últimos años y debido al crecimiento de población y servicios que ha experimentado el municipio es necesario acometer una ampliación de las dependencias municipales con los equipamientos y amplitud adecuada que permitan garantizar con eficiencia y calidad la prestación de los servicios públicos a los vecinos de Roquetas de Mar.
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);
});
“Con esta actuación ponemos a disposición del Ayuntamiento un espacio en el que se podrá desarrollar la acción formativa del personal a su servicio, los talleres municipales y, al mismo tiempo, servirá de apoyo a la formación de adultos que se lleva a cabo en el CEPER Mare Nostrum con unas nuevas instalaciones que están estructuradas en aulas de forma adecuada lo que evitará suficientemente reformas innecesarias y tan sólo se llevarán a cabo mínimas obras de adecuación con el fin de convertirse en un centro de educación.
Anuncio El Debate 7VAndalucia
/* Estilos para hacer el anuncio adaptable */
.anuncio-container {
max-width: 100%;
margin: 0 auto;
text-align: center;
}
.anuncio-enlace {
display: inline-block;
max-width: 100%;
transition: transform 0.3s ease;
}
.anuncio-enlace:hover {
transform: scale(1.02);
}
.anuncio-imagen {
max-width: 100%;
height: auto;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
Cabe recordar que recientemente se han tramitado distintos expedientes para la adquisición onerosa mediante concurso público de edificaciones cercanas a la Casa Consistorial para destinarlos a servicios administrativos o, en otros casos, para la nueva Jefatura de la Policía Local que culminaron con su adjudicación según acuerdos de Junta de Gobierno Local de 22 de junio de 2021, 29 de agosto de 2022 y 16 de abril de 2024.
Una vez aprobado este acuerdo, cuyo precio máximo de adquisición es de 180.258,00 € impuestos no incluidos, se procederá a dar de alta en el Inventario Municipal de Bienes, derechos y obligaciones este inmueble.
TEMAS RELACIONADOS: