Las cosas del querer de @Blogger: solución al fallo de su Feed en siteMaps 7.12.15
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

Ú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...!

Kseso
the obCSServer ᛯ 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 Kseso
Ehm... y qué ondas con el https://escss.blogspot.com/sitemap.xml
ResponderEliminarEso mismo digo yo ¿qué le pasa?
Eliminar¿No lo ves o no le diste tiempo?
Por leer solo el título y no el contenido, comenté una tontería.
EliminarJusto hoy pude darme cuenta que mi "Archivo de posts" estaba incompleto. Ya tenía lo de repetir solo cierta parte del script por cada "500" (solo resetear valores como numberfeed de mi script), ahora veo que hay q hacerlo cada 150.
Gracias :P
Muchas gracias por incluirme en esta entrada, pero repito, yo de esto no entiendo nada, solamente tuve suerte al darle vueltas al código que tu me enviaste. El verdadero merito es tuyo, primero por ayudarme, y segundo por no dejarme tirado despues de contestar.
ResponderEliminarQuizás tenga más problemas próximamente.
Un saludo.
Bueno, como ya dije en Twitter:
EliminarAsí, si hay reclamaciones... ya sabéis quién será el maestro armero de esta historia xD =P
Un saludo, Jose Mª
Al final entre todos conseguimos hacerlo funcionar de forma correcta y me alegro mucho de que hayáis dado con una solución definitiva.
ResponderEliminarMuchas gracias por las menciones :))
Un abrazo!!
Vete colocándote también el cartel de Maestro Armero, Jose Mª
EliminarUn salduo
jajajjaja, lo que haga falta ;)
EliminarHola Oscar
EliminarLo que tienes que hacer es poner, en la página donde quieras que se genere el sitemap, lo siguiente:
Lo primero el script con las opciones de configuración;
Y a continuación lo que indico en el código nº 3 de este post:
[code]
/* Generamos los ítems del 1º al 150º */
<script src="//ruta/script/crea/sitemap.js" />
<script src="http:/feeds/posts/default?star-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?star-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?star-index=301&max-results=150&alt=json-in-script&callback=loadtoc" />
/* ASÍ TANTAS VECES COMO SEA NECESARIO */
[/code]
Sustituyendo el texto //ruta/script/crea/sitemap.js por la ruta o url donde tengas alojado el script de José Mª
La ruta al script del feed:
/feeds/posts/default
no sería necesario modificarla si la url de tu blog es de blogger (.blogspot.com). Si has cambiado a otro feed o tienes una dirección propia cámbiala por la oportuna y correcta.
Un saludo
Eso se debe a un error tipográfico en el código: no es star-index, el parámetro correcto es start-index.
EliminarAhí tú, Jorge tan atento y perspicaz.
Eliminar¡Qué error más tonto agravado además por el copy&paste de una parte a otra.
Gracias Jorge y disculpa el quebranto que haya podido causarte, Oscar.
Un saludo
Hola, yo tengo el índice por etiquetas. Al modificar el script con vuestras instrucciones, me hace dos índices: uno detrás de otro. No sé si me explico bien. Me pone las etiquetas por orden alfabético con las entradas de cada etiqueta de las últimas 150 entradas; y a continuación vuelve a poner las etiquetas por orden alfabético con las siguientes entradas.
ResponderEliminar¿Alguna idea? Gracias!!
Por si sirve de ayuda, esto era lo que tenía antes, pero solo salían 150.
Eliminarscript src="http://www.lacocinaderebeca.es/feeds/posts/default?max-results=9999&alt=json-in-script&callback=loadtoc" (faltan < y >, que si no, no me deja publicar).
Hola Rebeca
EliminarEn este hilo del foro oficial de Blogger ienes una explicación del porqué ocurre ese comportamiento y posibles soluciones.
Tu caso (ordenar por etiquetas) lo encuentras detallado en mi primera intervención en él.
Un saludo
Acabo de leerlo y al parecer no tiene solución. Menuda faena, porque mi blog, como el de Laura, es de cocina, y el recetario ordenado es fundamental. ¿Ideas? Mil gracias!!
EliminarTras el toqueteo de los chicos del código de Blogger y si no pueden/quieren volver a permitir 500 posts o más en el parámetro max-results sólo queda que quien domine Js haga las modificaciones oportunas para obtener todos los grupos de 150 posts y después de obtenidos realizar una sóla ordenación por etiquetas.
EliminarCon suerte Laura "incentiva" (guiño guiño codazo guiño guiño) a alguno de sus alumnos o algún otro sufridor de Blogger se pone a ello.
Hasta entonces, si yo estuviese en tu caso sopesaría:
1º: crear un site map por fecha sólo a efectos de eso, site map de cara a bots
2º: de cara a los usuarios crearía un menú con cada una de las etiquetas más significativas con la tipo:
[code]
<ul>
<li><a href='http://tublog.blogspot.com/search/label/carnes'>Carnes</a></li>
<li><a href='http://tublog.blogspot.com/search/label/pescado'>Pescado</a></li>
...
</ul>
[/code]
Un saludo
Hey Rebeca, me encantó el diseño minimalista de tu blog. Muy bueno, felicitaciones por el trabajo.
Eliminar