soy Kseso y esto EsCSS

Las cosas del querer de @Blogger: solución al fallo de su Feed en siteMaps

Cómo solucionar el fallo del RSS del feed de Blogger en su uso para generar el siteMap del Blog.

Las cosas del querer de @Blogger: solución al fallo de su Feed en siteMaps

·Por Kseso ✎ 20
Las cosas del querer de Blogger: fallo del feed en sitemaps y solución

Últimamente los usuarios de la plataforma de blogs de Blogger no ganamos para sustos.

Los chicos que están tras el CMS de Blogspot en su afán de introducir mejoras (quiero suponer que es por esto) no hacen más que depararnos sorpresas y no todas hacen gracia. Pero sorpresivas sí que lo son. Como niño o gato que se esconden y al pasar... ¡UUUUUH!

Una de estas últimas ha sido el feed del blog. Comenzó a mostrarse inestable y en algún momento pasó a ser insufrible.

Y su comportamiento afectaba a una amplia variedad de funciones, widgets y realizaciones que lo tienen como base.

En los foros oficiales de Blogger podrás encontrar referencias y consultas a ello. También con posterioridad comentarios y afirmaciones demasiado optimistas de que ya todo volvía funcionar con normalidad.

Límites del feed

Tradicionalmente los feed RSS tienen una serie de limitaciones que atañen a su peso y número de ítems. Dependiendo de qué servicio se use su peso puede estar limitado a 512k o 1024k y el máximo de ítems limitado a 500.

Es por esta limitación por lo que seguramente habrás visto y hasta es posible que uses ciertos parámetros en la llamada que hagas a tu feed. start-index= y max-results= son de los más utilizados y seguro que hasta los empleas al indicar tu siteMap a Google, por ejemplo.

... src='/feeds/posts/default?redirect=false&start-index=1&max-results=150' /> ... src='/feeds/posts/default?redirect=false&start-index=151&max-results=150' />

siteMaps, su colapso y arreglo

Para construir el siteMap del blog inicialmente utilizaba una realización basada en los "pipes de Yahoo!. Pero este año dejó primero de dar soporte y finalmente quedó inaccesible.

Así que me tocó buscar una alternativa.

De entre las que encontré me quedé con una basada en un script del que no pude localizar su autor original y primigenio. Esas cosas que tiene internet. Pero este script sí se que fue modificado por José M. Acuña [aka @jmacuna73] y lo tienes disponible en su blog

Básicamente consiste en unas opciones de configuración, una llamada al script que hace posible el siteMap y la llamada a tu feed para obtener los ítems de tu blog. Estilos aparte.

<script> /* OPCIONES CONFIGURACIÓN */ </script> <script> /* SCRIPT QUE MONTA EL SITEMAP */ </script> /* LLAMADA AL FEED DEL BLOG */ <script src="/feeds/posts/default?max-results=500&alt=json-in-script&callback=loadtoc" />

Como no me gusta depender de recursos alojados fuera, controlados por terceros que pudieran desaparecer y que además aumentan las peticiones de la página (con lo que ello conlleva) decidí poner el script que genera el siteMap en la misma página donde lo monto.

Además de ello necesitaba alterar un poco el marcado html generado para adaptarlo a mis necesidades.

Y aquí confluyen los problemas de Blogger con su RSS Feed y los quebrantos en el siteMap. Con independencia que utilices el script de @jmacuna73, otro parecido o uno totalmente distinto.

Primero no generaba el siteMap, después fue bajando el número de ítems (posts) referenciados y finalmente quedó en 150 como máximo.

Tras unas cuantas pruebas y otros tantos errores me fue imposible generar el siteMap conteniendo los enlaces a todos los más de 500 artículos que hay en el blog.

No pude lograrlo de forma automática utilizando sólo los scripts. Si repetía más de una vez el script que llama al feed del blog variando el valor en el parámetro start-index= manteniendo constante max-results=150 obtenía un número mayor de ítems porque repetía aleatoriamente unos cuantos de ellos. Terminaba con una relación de más de 600 ó 700 cuando sólo son poco más de 500. Con independencia del máximo de resultados que indicase (50, ó 100, ó 150 o incluso mayor).

Lo más que pude lograr fue obtener todos con el uso sucesivo de los parámetros start-index= y max-results=, copiar los enlaces generados cada vez e incluirlos como una lista en la página.

La solucción funcional

Y ahí quedó durante unos días mi fracaso hasta que en una de mis esporádicas visitas al foro oficial de Blogger me topé con una petición de ayuda de un usuario de este CMS, Jose Mª Mondejar, para el siteMap de su blog.

Le compartí mi experiencia y solucción tan poco elegante y efectiva por si le era de utilidad y ahí creí terminada la historia.

Sin embargo Jose Mª sí mantenía el script alojado fuera de la página donde genera su siteMap. Y esto se reveló como un dato crucial.

A él se le ocurrió una prueba a mayores que yo no había hecho (ni pensado) y fue llamar también al script que monta el siteMap tantas veces como al que captura los ítems del siteMap:

/* Generamos los ítems del 1º al 150º */ <script src="//ruta/script/crea/sitemap.js" /> <script src="http:/feeds/posts/default?start-index=1&max-results=150&alt=json-in-script&callback=loadtoc" /> /* Generamos los ítems del 151º al 300º */ <script src="//ruta/script/crea/sitemap.js" /> <script src="/feeds/posts/default?start-index=151&max-results=150&alt=json-in-script&callback=loadtoc" /> /* Generamos los siguientes 150 ítems */ <script src="//ruta/script/crea/sitemap.js" /> <script src="/feeds/posts/default?start-index=301&max-results=150&alt=json-in-script&callback=loadtoc" /> /* ASÍ TANTAS VECES COMO SEA NECESARIO */

Y así es como lo que comenzó siendo un "yo intento ayudarte" terminó convertido en "fui yo el ayudado". Gracias. Cosas que tiene el compartir ;-)

Y si este post ha de tener un final, que sea las palabras del propio Jose Mª Mondejar:

No se si está bien hecho, pero... ¡FUNCIONA...!

avatar del Editor del blog

Ramajero Argonauta, Enredique Amanuense de CSS.
#impoCSSible inside
Dicen que, en español, EsCss es el mejor blog de CSS. Posíblemente exageren.
@Kseso EsCss Don Kseso Kseso