jueves, 26 de enero de 2012

Una solución para la paginación de comentarios antiguos

No sólo hemos tenido algunos problemas aquellos que nos hemos pasado forzosa o voluntariamente al nuevo sistema de comentarios hilados, agrupados o anidados (nomenclatura a elegir). También los que han conservado el antiguo sistema, igualmente de manera voluntaria o por causa de fuerza mayor, tienen algunos problemillas con ellos.


Los síntomas son distintos, pero el origen de la enfermedad es el mismo. De momento ya tengo conocimiento de dos. Uno es el que ayer comentaba J.Miur respecto a la desaparición del nuevo estilo que hasta ahora estaba insertado en la plantilla. Eso ha provocado que las modificaciones que pudieras haber hecho directamente en esa parte ya no estén y que los comentarios se vean de aquella manera.

La solución es volver a regenerar el estilo, pero si todavía no te lo han borrado de tu plantilla puedes aplicar una pequeña modificación preventiva que se explica en el anterior enlace de Vagabundia.


El segundo problema es el de la paginación de comentarios en posts con más de 200. Aquí lo que ocurre es que no se puede acceder a dichas páginas, siendo imposible ver nada a partir del que hace 201.

Pero también alguien -que no fui yo- ha encontrado una manera de arreglar esto. Se trata de un pequeño JavaScript que aprovechando las variables data oportunas y las direcciones que maneja Blogger para mostrar las distintas páginas, reproduce el sistema de paginación.

Aclaro que no restaura lo que sea que se haya perdido, sino que directamente construye las páginas y los enlaces a ellas con un código alternativo.


Ese alguien es el editor de Simplex Design y a continuación voy a intentar traducir lo mismo que allí podréis encontrar. Cuando no he probado algo lo advierto y esta es una de esas veces porque no tengo el sistema antiguo en ningún post con más de 200 comentarios, aunque siguiendo la lógica del código, debería funcionar y bien.

Y como hace tiempo que no lo digo, recuerdo que los experimentos se hacen con gaseosa y que para hacerlos con tu plantilla real, antes siempre deberías guardar una copia de seguridad por si se te va una tecla de más y borras algo importante accidentalmente.


Recomponer paginación de comentarios


1. Escritorio ► Pantilla ► Editar HTML ► Continuar ► Expandir plantillas de artilugios

2. Añadir estas líneas antes de ]]></b:skin>

#commentpaging {float:right;}
#commentpaging a {margin-right:5px;}

3. Añadir el JavaScript antes de <body> (supongo que también sirve antes de </head>)

<script type='text/javascript'>
//<![CDATA[
function commentpagination(url,comment){
var posturl= url;
var comment = comment;
cmpage = Math.ceil(comment/200);
document.write('<a href="'+posturl+'?commentPage=1">Primeros</a>');
for (var i = 1; i <= cmpage; i++) {
document.write('<a href="'+posturl+'?commentPage='+i+'">'+i+'</a>');
}
document.write('<a href="'+posturl+'?commentPage='+cmpage+'">Últimos</a>');
}
//]]>
</script>

4. Encuentra la línea <b:includable id='comments' var='post'> y justo a continuación insertas la llamada al script

<b:includable id='comments' var='post'>
<span id='commentpaging'>
<script type='text/javascript'>commentpagination(&quot;<data:post.url/>&quot;,&quot;<data:post.numComments/>&quot;);</script>
</span>

5. Graba los cambios.

Actualización: Una mejora propuesta por J.Miur para que no salga la paginación cuando sólo hay una página, sería añadir una condición que saltaría la impresión en ese caso. En verde lo que habría que añadir:

...
cmpage = Math.ceil(comment/200);
if(cmpage>1) {
....... document.write ....... etc etc
}

Cómo funciona


Primero este script toma el número de comentarios del post y lo divide por 200. Redondea el resultado al entero mayor y así se sabe cuantas páginas hay que construir. Por ejemplo, si una entrada tiene 250 comentarios: 250:200=1,25 ► 2 páginas. De esta manera, la primera página tendrá 200 comentarios y la segunda 50.

La dirección a una página de comentarios tiene la estructura:
http://dirección del post.html?commentPage=número de página

Por ejemplo, en la página del autor, la página 2 de comentarios sería así:
http://www.thesimplexdesign.com/2011/02/simplexenews-latest-version-fixed.html?commentPage=2

Una vez conseguidos el número total de páginas de comentarios y la estructura de la dirección de cada página, el siguiente paso es muy simple, sólo escribimos debajo los enlaces a todas las páginas que pudiera haber con un bucle.

No hay comentarios:

Publicar un comentario