Tecno4all

“Great spirits have always encountered opposition from mediocre minds.”
Albert Einstein

miércoles, junio 29, 2005

Hack para categorías en Blogger

En el blog Content Management Trends hallé código en JavaScript que permite presentar el listado de entradas en el blog por categorías. La explicación de cómo utilizarlo aparece en dos entradas del blog:


El código está contenido en este archivo: Mozcat

Copie este pedazo de código que sigue y péguelo en su plantilla justo antes de la etiqueta </div> al final del bloque the <div class="post">
<script type="text/javascript">

var posts=document.getElementsByTagName("DIV");

var pcount=0;
var fcount=0;

for(var i = 0; i < posts.length; i++) {
if (posts[i].className=="post")
fcount++;
}

for(var i = 0; i < posts.length; i++) {
if (posts[i].className=="post"){

cats=posts[i].getElementsByTagName("input");
if (cats.length == 0){
var ape=document.createElement("input");
ape.setAttribute("type", "hidden");
ape.setAttribute("name", "category");
ape.setAttribute("value", "Sin categorizar");
ape.setAttribute("src", "<$BlogItemPermalinkUrl$>");
ape.setAttribute("id", "<$BlogItemTitle$>");
posts[i].appendChild(ape);
//cats=posts[i].getElementsByTagName("input");

}
if (pcount+1==fcount){
cats[0].src="<$BlogItemPermalinkUrl$>";
cats[0].id="<$BlogItemTitle$>";

}
pcount++;
}
}

</script>

Luego, localice dentro de la plantilla el lugar donde quiere que aparezca el listado por categoría e inserte este código:

<script type="text/javascript">

var hats=document.getElementsByTagName("input");
var categs= new Array();
var cats= new Array();

for(var i = 0; i < hats.length; i++) {
if (hats[i].name=="category"){
cats.push(hats[i]);
}
}
for(var i = 0; i < cats.length; i++) {
if (categs[cats[i].value] > 0)
categs[cats[i].value]++;
else

categs[cats[i].value]=1;
}
for(var category in categs) {
document.write("<ul><b>"+category+"</b>");
for(var i = 0; i < cats.length; i++) {
if (cats[i].value==category)
document.write("<li><a href="+cats[i].src+">"+cats[i].id+"</a></li>");
}
document.write("</ul>");
}

</script>

En el primer pedazo de código puede editar la línea ape.setAttribute("value", "Sin categorizar") para cambiarle el título a la sección de entradas sin clasificar. En el ejemplo el título de la sección será "Sin categorizar".

Para declarar la categoría de cada entrada añada al final del texto código como este:

<input name="category" value="Hackeando a Blogger" type="hidden">


Lo único que debe cambiar es el texto de atributo "value" por el nombre de la categoría que desea. Para añadir más entradas a esa categoría añadirá ese pedacito de código al final de cada entrada y escribirá el mismo "value", EXACTAMENTE. Para el código la categoría "Viajes veraniegos" es diferente a "Viajes Veraniegos".

Una limitación del hack es que solamente clasifica las entradas visibles en la página, no todas las entradas existentes en el blog. Si en las preferencias de Blogger tenemos que se presentarán solamente los blogs de los últimos 7 días, esos serán los únicos categorizados. Para lograr que los categorizará todos, en mis preferencias pedí que aparecieran hasta 999 entradas en la misma página, el máximo permitido por Blogger. Esto puede provocar que la página tarde mucho en cargar si es que tenemos muchas entradas. Igual, si entramos en los archivos, en mi caso mensuales, el programa sólo categoriza los ítemes de ese archivo en particular.

Esperamos que Blogger implemente pronto las categorías que ya disfrutan los usuarios de WordPress. Aunque inventar hacks entretiene.