en blogger ¿como hago un buscador usando el json feed? Que tenga lo siguiente:
un icono Unicode search, que al hacer click abra una ventana modal responsive con el input y boton buscar, un icono unicode arriba de cerrar, que muestre solamente 5 resultados/entradas y abajo un boton 'mostrar mas' para otras 5 entradas, con url de la entrada, imagen (entrada.media$thumbnail.url), con imagen alternativa si no tiene la entrada, autor, fecha, que use una busqueda precisa al buscar una palabra; y que al cerrar la ventana modal se 'borre' la busqueda/palabra anterior del input
¡Claro! Aquí te presento un ejemplo básico de cómo crear un buscador en Blogger utilizando la API de JSON Feed. Este buscador muestra los 5 resultados más recientes de un blog por defecto, y al hacer una búsqueda precisa utilizando palabras clave, mostrará los 5 resultados más relevantes correspondientes a la búsqueda.
Hay que seguir los siguientes pasos:
1. Agregar el código HTML:
```
<div id='searchx'>
<span class='icono-busqueda'>🔍</span>
</div>
<div class='modal' id='modal-busqueda'>
<div class='modal-contenido'>
<span class='cerrar-modal'> x </span>
<h2>Buscar en el blog</h2>
<form id='form-busqueda'>
<input id='input-busqueda' placeholder='Buscar...' type='text'/>
<button id='boton-busqueda' type='submit'>Buscar</button>
</form>
<ul id='resultados-busqueda'></ul>
<button id='boton-cargar-mas' type='button'>Cargar más entradas</button>
</div>
</div>
```
2. Agregar el código JavaScript:
```
// Declarar variables
var URLFeed = '/feeds/posts/default?alt=json&max-results=5';
var formularioBusqueda = document.querySelector('#form-busqueda');
var entradaBusqueda = document.querySelector('#input-busqueda');
var botonCargarMas = document.querySelector('#boton-cargar-mas');
var resultadosBusqueda = document.querySelector('#resultados-busqueda');
var busquedaPalabra = '';
// Función para cargar las entradas del blog
function cargarEntradas() {
botonCargarMas.style.display = "none";
fetch(URLFeed).then(function(response) {
return response.json();
}).then(function(data) {
var entradas = data.feed.entry.slice(0, 5);
if (entradas.length > 0) {
entradas.forEach(function(entrada) {
var urlEntrada = entrada.link[entrada.link.length - 1].href;
var tituloEntrada = entrada.title.$t;
var contenidoEntrada = entrada.content.$t;
var imagen = '';
if (entrada.media$thumbnail !== undefined) {
imagen = '<img src="' + entrada.media$thumbnail.url + '">';
} else {
imagen = '<img src=".../imagen-alternativa.jpg">';
}
var autorEntrada = entrada.author[0].name.$t;
var fechaEntrada = new Date(entrada.published.$t);
var fecha = fechaEntrada.getDay() + '/' + fechaEntrada.getMonth() + '/' + fechaEntrada.getFullYear();
if (busquedaPalabra !== '' && contenidoEntrada.toLowerCase().indexOf(busquedaPalabra.toLowerCase()) === -1) { // el segundo término revisa que la palabra clave esté presente en el contenido de entrada
return; // si no hay coincidencia, salta a la siguiente iteración del ciclo for each
}
resultadosBusqueda.innerHTML += '<li><a href="'+ urlEntrada +'" target="_blank">' + imagen + tituloEntrada + '</a> por ' + autorEntrada + ' el ' + fecha + '</li>';
});
if (data.feed.entry.length > 5) {
botonCargarMas.style.display = "block";
}
} else {
resultadosBusqueda.innerHTML = '<li>No hay entradas en el blog.</li>';
}
});
}
// Función para manejar la búsqueda del usuario
formularioBusqueda.addEventListener('submit', function(evento) {
evento.preventDefault();
resultadosBusqueda.innerHTML = '';