Una mejora a los Posts Relacionados

En un comentario reciente, QuéOlorTiene propone una alternativa a lo explicado oportunamente en una serie de artículos donde se mostraba cómo implementar un hack para que en Blogger pueda mostrarse una lista de Posts relacionados [1, 2, 3]

Lo he estado probando y, como me parece un aporte no solo generoso sino muy útil, aquí va la explicación.

La modificación que propone se basa en que, como el script sólo lee una cantidad reducida de feeds y siempre los más recientes, los resultados obtenidos son los mismos. Por un lado, esto lo soluciona aumentando el valor de max-result a 50 para que se busquen posts más antiguos.
<b:if cond='data:blog.pageType == "item"'>
<script expr:src='"/feeds/posts/default/-/" + data:label.name +
"?alt=json-in-script&amp;callback=related_results_labels&amp;max-results=50"'
type='text/javascript'/>
</b:if>
Esto, deberá ser evaluado en cada caso porque influye en la velocidad de carga de las páginas. El valor que propone es un valor razonablemente alto. Personalmente, tuve que reducirlo pero, cada uno deberá irlo verificando en su propio blog. Parece lógico hacerle caso y comenzar por 50 a ver qué ocurre.

La segunda parte de su idea es válida para cualquier caso y es, probablemente, la parte más interesante.

Para evitar las repeticiones, es decir, que cada vez que se entre en una página se muestren siempre los mismo resultados, le agrega al script una nueva función que, simplemente, muestra resultados de manera aleatoria; en lugar de mostrar los primeros que encuentra, elige dentro de la lista así que, cada vez que recargamos, habrá diferentes resultados. Es una buena manera de mostrar artículos viejos y darles nueva vida.

La función a agregar al script es la siguiente:
function mixRelatedLabels() {
for(var i = 0; i < relatedTitles.length; i++){
var indice = Math.floor((relatedTitles.length - 1) * Math.random());
var tempTitle = relatedTitles[i];
var tempUrls = relatedUrls[i];

relatedTitles[i] = relatedTitles[indice];
relatedUrls[i] = relatedUrls[indice];

relatedTitles[indice] = tempTitle;
relatedUrls[indice] = tempUrls;
}
}
En caso de dudas, puede descargarse un TXT con el script completo

Luego, en la parte de la plantilla donde se llamaba a las funciones, donde decía:
<script type='text/javascript'>
removeRelatedDuplicates();
printRelatedLabels();
</script>
Agregamos la nueva función:
<script type='text/javascript'>
removeRelatedDuplicates();
mixRelatedLabels();
printRelatedLabels();
</script>
Ya estoy usando los cambios y la diferencia es notable.

Muchísimas gracias por el aporte risa

18 comentarios:

Carlos Soler

JMiur he hecho las modificaciones tal como explicas y va de maravilla, lo he probado y no se repiten, los posts relacionados cambian aleatoriamente. La paginas con 50 se me cargan rápido. Si no tienes experiencia con las plantillas, y si la tienes también, recomiendo hacer copia, por si acaso. ¡Gracias Maestro!

QuéOlorTiene

Me alegro JMiur que el script haya sido de utilidad... es un aporte mínimo como agradecimiento por las ideas que he encontrado en tu página e incorporado en mi blog.

Comencé probando con 50 posts y me quedé en esa cifra por un asunto de funcionalidad, ya que en mi blog escribo sobre perfumes y cada etiqueta es una característica o marca, así que a la hora de sugerir un perfume tengo que hacer un barrido bastante amplio para no quedarme solo con las últimas publicaciones. Es algo lento pero vale la pena porque en algunos casos tengo perfumes con 7 etiquetas y una etiqueta puede tener más de 100 perfumes con características similares.

Saludos y gracias!!!

BoatoLuxo

si, de verdad queda bueno...

saludos

JMiur

La verdad funciona muy bien y a me convencieron para elevar el número a 50 :D

Es cierto que los resultados cambian drásticamente.

Vuelvo a reiterar las gracias por el aporte: EXCELENTE, de verdad :)

Eulalia

Es sencillamente genial. Simplemente con actualizar la página cambian las entradas mostradas, aunque a veces solo muestra dos (lo tengo en 3) ¿es normal?. Anoche copié el código del blog de Rosa y funcionó a la primera y acabo de actualizarlo con este parche. Lo que me ha dado la impresión es que tarda un poquito más en cargar, pero muy poco.
Saludos y gracias.

Eulalia

Ya he visto porqué a veces solo enseña dos. Depende de lo largo que sea el título. Si ocupa dos líneas solo muestra dos entradas relacionadas. ¡Ah! la orden esa de <20 no parece funcionarme, pues enseña entradas con títulos larguísimos. No es que me importe, al contrario, pues a veces escribo títulos dignos del Quijote, es tan solo para que lo sepas.Saludos.

JMiur

Eulalia, el largo de los titulos que se filtran está ene esta línea:

while (i < relatedTitles.length && i < 50) {

50 caracteres. Si quieres, cámbialo por un valor superior, eso depende mucho de como lo estés mostrando y de cómo quedará.

Respecto al tiempo, sí, debe aumentar con respecto al original pero no parece algo sustantivo. De cualquier manera, si resulta "molesto", se resuelve reduciendo la cantidad de posts analizados:

&max-results=50

Calithos

JMiur parabems!! como dicen en Brasil ! , la verdad siempre creo que el exito de una persona se media por cuanto gente esta ayuda .La verdad que eres superexitoso amigo ! , te felicito y gracias por todo! , mi blog es la enviadia de mi categoria gracias a Dios y a ti amigo .

JMiur

Gracias Calithos, muy amable de tu parte :)

Protegon

Me he encontrado este post de pura casualidad y me ha gustado eso de el efecto aleatorio. Pero yo sigo queriendo que en cada página salgan más de 20 resultados. Pero no me refiero especificamente a entradas relacionadas sino a que cada vez que yo dé click en una label, esta me lleve a una página con más de 60 resultados.

Te agradezco cualquier ayuda JMiur, salu2

Javi

Gracias por toda esta información, justo lo que hace dias estaba buscando, me quito el sombrero señores, todo listo y funcionando perfectamente, muchas gracias.

Francisco Javier Díaz

En qué parte del código debo insertar la función aleatoria?

JMiur

Depende del modelo que quieras usar, el que yo utilizo es el que se muestra en esta entrada.

Manfenix

Hola JMiur, seguí puntillosamente todos los pasos para implementar el hack que permite mostrar los post relacionados, y lo he conseguido. Tenía mis dudas de logralo en un solo intento, por que soy nuevo en esto de modificar plantillas. Gracias por el aporte!!!.

JMiur

Me alegro que funcionara, Manfenix :D

Manfenix

Una consulta al margen de este post JMiur, hace poco cambié el color de fondo de los post y de las sidebar. Esto hizo que el texto que acompaña al formulario de comentarios no se muy visible por el fondo del body. Intenté colocar background en cada #comment, a modo de prueba y error para logra dar un color de fondo a esa parte pero no lo logré. Se puede hacer esto?.

JMiur

Si, puede hacerse eso o cambiar el color de los textos en determinado lugar. Pero debería ver exactamente dónde quieres hacer el cambio o que colores usas para guiarte.

¿Quiere dejar un comentario?

Hay varios métodos posibles.

Uno de ellos es el formulario de comentarios que tan generosamente nos ha regalado Blogger y que funciona sólo de tanto en tanto. Su uso es aconsejable sólo en caso de ser una de esas personas a las que les gustan los retos y los desafíos.
¿No quiere arriesgarse? Haga click para ocultarlo y utilice las otras opciones.

Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.

Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...

Los comentarios están siendo moderados y serán publicados a la brevedad.