Crear subetiquetas en Blogger
Que Blogger no es especialmente flexible a la hora de personalizar el blog es bien conocido. Lo sabrá cualquiera que haya intentado juguetear un poco con el template. Wordpress ofrece muchas más características, además de plugins de terceros que se pueden integrar fácilmente (supongo) para personalizar el blog. Yo ya me he peleado unas cuantas veces con mi plantilla cuando he querido hacer algunas cosas un poco especiales: ensanchar el blog, introducir el Seguir leyendo, definir entradillas personalizadas, y más recientemente pasar del tamaño fijo y ajustar la anchura del blog al tamaño de la pantalla.
Una cosa que siempre he deseado hacer era utilizar subetiquetas. Es decir: refinar un conjunto de posts (los de la etiqueta Cerveza en este caso) con otras etiquetas. Esto es bastante útil para clasificar los post en la barra lateral, al menos en un blog como el mío. Los gestores de blogs no entienden de subetiquetas y todas las etiquetas tienen la misma jerarquía. Así que el tema consiste en conseguir que en la barra lateral aparezcan, alineadas en forma de árbol, las etiquetas y subetiquetas que yo desee. Encontré un método muy cómodo y personalizable, pero que incluía bastante Javascript (además de tener otros inconvenientes). Yo lo quería sin librerías de funciones ni muchas imágenes ni nada de eso. Finalmente se me ocurrieron dos soluciones de aficionado (que funcionan).
La solución con falsas etiquetas
El problema con Blogger es que no soporta las consultas del tipo: muéstrame todos los posts con la etiqueta 'Cerveza' AND 'Historia'. No le da la gana1. Porque Wordpress sí que lo hace y para muestra, http://curiosoperoinutil.com/category/ciencia/fisica/. Podéis ver que el blog Curioso pero Inútil tiene en la barra, bajo la categoría Ciencia muchas subetiquetas, como por ejemplo Física.
Por otro lado Blogger sí que soporta la búsqueda de cadenas de texto. Así que mi primera solución fue de pillo: emplearía falsas etiquetas con palabras clave, ocultas en cada post que quisiera clasificar bajo la etiqueta de 'Cerveza'. Por ejemplo, en cada post que fuera de Historia de la Cerveza gastaría la palabra oculta cervhistoria. Para ocultarla, basta cambiar la propiedad de estilo display.
Es decir, escribo, al final de cada post de Cerveza con la 'subetiqueta' Historia <span style="display:none;>cervhistoria</span>.
Una vez hecho esto podemos consultar todos los posts con la palabra cervhistoria con la consulta http://civada.blogspot.com/search?q=cervhistoria2.
Y ahora sólo tengo que editar el template del blog para cambiar la barra lateral. A los elementos especiales del blog que están en la barra lateral se les llama widgets. Hay un widget específico para las etiquetas. En él se recorren todos los nombres de etiquetas de tu blog que Blogger almacena (alfabéticamente) y se muestran como una lista html. Sólo tenemos que 'buscar' la etiqueta deseada (Cerveza) y entonces iniciar una sublista html. En ella añadiremos los enlaces a las búsquedas de palabras ocultas. (el añadido está en rojo)
Buscamos el widget en el template y hacemos esto (alguien que haya hecho algo de informática lo entenderá enseguida):
<b:includable id='main'>
<b:if cond='data:title'>
<H2><data:title/></H2> <!-- Esto es la palabra 'Etiquetas' -->
</b:if>
<DIV class='widget-content'>
<UL> <!-- Aquí empieza la lista principal -->
<b:loop values='data:labels' var='label'>
<LI>
<b:if cond='data:blog.url == data:label.url'>
<SPAN expr:dir='data:blog.languageDirection'>
<data:label.name/>
</SPAN>
</b:if>
<b:else/>
<A expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></A>
</b:if>
<SPAN dir='ltr'>(<data:label.count/>)</SPAN> <!-- Número de posts con la etiqueta -->
<b:if cond='data:label.name == "Cerveza"'> <!-- Aquí empieza lo bueno -->
<UL style='margin-top:5px;'>
<LI><A href='http://nombredelblog.blogspot.com/search?q=cervhistoria'>Historia</A></LI>
<LI><A href='http://nombredelblog.blogspot.com/search?q=cervestilos'>Estilos</A></LI>
</UL> <!-- Fin de la sublista -->
</b:if>
</LI> <!-- Fin de la entrada de Cerveza -->
</b:loop> <!-- Fin del bucle -->
</UL> <!-- Fin de la lista de entradas -->
<b:include name='quickedit'/>
</DIV>
</b:includable>
</b:widget> <!-- Sanseacabó el widget -->
Y funciona. Veamos las ventajas de este método.
Pero veamos las desventajas
Así que mirando el template di con una solución más bestia y menos elegante, pero con etiquetas de verdad.
La solución a lo bruto
Es muy sencilla: consiste en NO añadir a la lista principal las subetiquetas Y AÑADIRLAS expresamente bajo la etiqueta principal. Para eso gastaremos dos millones de expresiones condicionales. ¿Por qué?. Porque, que yo sepa, Blogger no entiende expresiones condicionales compuestas. Supongamos que tenemos tres subcategorías bajo Cerveza que son Historia, Estilos y Ronda.
La cosa es (atentos, amantes del pseudo-código)
SI nombre_de_etiqueta NO_ES Historia NI Estilos NI Ronda ENTONCES
(abrimos lista)
...Código del widget...
SI nombre_de_etiqueta ES Cerveza ENTONCES
PARA todas_las_etiquetas HACER
(empezamos sublista)
SI nombre_de_etiqueta ES Historia O Estilos O Ronda
Añadimos enlace a la etiqueta como el resto.
(cerramos sublista)
(cerramos lista)
PUES_YASTA
El único problema es que en Blogger (QUE YO SEPA) no se puede poner ni NI ni O. Lo cual es triste para la programación. Porque hay que añadir un mogollón de código. Algo así:
<ul> <!-- Inicio de la lista -->
<b:loop values='data:labels' var='label'>
<b:if cond='data:label.name != "Estilos" '>
<b:if cond='data:label.name != "Historia" '>
<li>
<b:if cond='data:blog.url == data:label.url'>
<span expr:dir='data:blog.languageDirection'>
<data:label.name/>
</span>
<b:else/>
<a expr:dir='data:blog.languageDirection' expr:href='data:label.url'>
<data:label.name/>
</a>
</b:if>
<span dir='ltr'>(<data:label.count/>)</span>
</li>
</b:if></b:if> <!-- Tantos cierres como subetiquetas que no han de estar -->
<b:if cond='data:label.name == "Cerveza"'>
<ul style='margin-top:5px;'> <!-- Inicio la sublista -->
<b:loop values='data:labels' var='label'>
<b:if cond='data:label.name == "Estilos" '>
<li>
<b:if cond='data:blog.url == data:label.url'>
<span expr:dir='data:blog.languageDirection'>
<data:label.name/>
</span>
<b:else/>
<a expr:dir='data:blog.languageDirection' expr:href='data:label.url'>
<data:label.name/>
</a>
</b:if>
<span dir='ltr'>(<data:label.count/>)</span>
</li>
<b:else/>
<b:if cond='data:label.name == "Historia" '>
<li>
<b:if cond='data:blog.url == data:label.url'>
<span expr:dir='data:blog.languageDirection'>
<data:label.name/>
</span>
<b:else/>
<a expr:dir='data:blog.languageDirection' expr:href='data:label.url'>
<data:label.name/>
</a>
</b:if>
<span dir='ltr'>(<data:label.count/>)</span>
</li>
</b:if></b:if> <!-- Tantos cierres como subetiquetas -->
</b:loop>
</ul> <!-- Fin de la sublista -->
</b:if> <!-- Si era cerveza -->
</b:loop>
</ul> <!-- Fin de la lista -->
Y no queda nada elegante, pero funciona, y funciona bien, como pueden ver en la barra de al lado. Pasemos pues a la enumeración de pros y contras (esta vez en orden inverso).
Contras de esta solución:
Ventajas:
Hay que hacer notar que, aunque pongamos mogollón de código condicional en el template, éste no se transmite y por tanto no hace que la página 'pese' más. Sí que puteamos un poco a los servidores de blogger, que son los que procesan el template junto con los datos del blog y crean el código html que es efectivamente transferido (el tiempo de proceso del servidor suele ser nimio en comparación con el de transmisión). Pero que se jodan. Haber dado soporte directamente, leñe.
Y ya está. ¿A que mola?. Yo no lo había visto en ningún blog de Blogger. Sólo hace falta que lo diga para que me salgan 15 ejemplos. Si alguien conoce una manera mejor de hacer lo mismo, que me lo diga, por favor.
Actualización
Rô ha realizado en su blog una explicación detallada del segundo método. La pueden consultar aquí: Parte I, Parte II y Parte III. Si después de leerlos les queda alguna duda... ¡léanlo otra vez, porque está muy bien explicado!. Bueno, no, pregunten si quieren...
2 Evidentemente, hay que emplear alguna palabra que no vayamos a usar en posts que no sean de esa subcategoría.
Posts relacionados
16 cosillas:
No entendí nada jejejejeje
Todavía sigo peleandome con lo de seguir leyendo y no veo forma humana de que me quede, o no sale o me deshace el template, vaya jaleo.
Hablando de templates, llevo tiempo con la idea de poner uno de tres pestañas, con lo del centro más amplio para que quede mejor la publicación pero no veo manera. Los que encuentro que me gustan están en XHTML Y Blogger no me lo acepta. Cómo se puede solucionar eso?? por otro lado, es posible crear uno mismo sus templates con fotos propias y demás sin tener ni puta idea, como es mi caso jejejee??Ta in advance
Hola Chela.
Pues vaya: espero que alguien lo haya entendido, porque si no... :-(
El problema es que intento ser claro en poco espacio y es difícil.
Tres pestañas son tres columnas, ¿no? Dos barras laterales y la central, digo. Hay páginas, que ya habrás visto, que ofrecen distintos templates, pero si al subirlas te da error lo que puedes intentar es copiar y pegar, para luego salvar. Prueba de ese modo.
Ya te comenté que lo de Seguir leyendo te lo podía hacer en un momento (o tarde). Envíame el archivo xhtml que te baja y te lo paso modificado. También es sencillo modificar el ancho del blog. Así que si no te sale y ya te has cansado, ya sabes.
Por otro lado lo de la KDD sigue adelante, pero echo de menos las opiniones de Fivvix, VdeAlmeida, MaltaNostrum, HiposUrinatum y Lúpulo y cereales. A ver si Iker se anima.
Si te pasas por su blog, dales un toque de mi parte ;-) : invitación para la wiki recibieron todos.
Un saludo!
Holla desde Brazil y desculpame por el "portuñol"! jeje
Eso es lo mejor tutorial con respecto a subetiquetas! Muchas Gracias por compartir.
Yo estaba peleando por hacer una traduccíon simples del tutorial de Dummies for Bloggers. Mis lectores me piden algo sobre eso, pero ellos no son muy experientes y me quedaba loca intentando hacer una entrada "entendible".
La tuya idea es muy mas facil de explicar a ellos. Gracias nuevamente e estoy haciendo un post a respecto con un enlace a tu blog.
Saludos!
Rô: si tengo que disculparte por tu español tendría que pedir perdón de rodillas de intentar escribir en portugues: ¿¿por qué portugueses y brasileños entienden el español y yo no puedo entenderles nada??
No sé si esta solución es más sencilla que la de Blogger for Dummies. Sí que es verdad que en el blog inglés no está bien explicada y que el diseño del blog (y colores) son horrorosos: así es más difícil de entender. Yo probé el resultado de esa manera pero no me gustaba que cada vez que crearas una nueva etiqueta, no se añadiera automáticamente.
Creo que mi solución es buena siempre que no quieras poner muchas etiquetas ni varios niveles. Pero quizá sea difícil de entender si nunca has visto el código del template o no entiendes cómo funciona. Si sabes programar sí que se ve enseguida.
Me alegra que intentes explicarlo y espero tengas suerte en tu intento. Un saludo y gracias por comentar.
No no, no lo entendí no porque estuviera mal explicado si no porque soy un negao( o un Dummie jejeje) para esto jejejejeje
Sigue tu labor de docencia que va bien como viste
Si tres pestañas son tres columnas, me expliqué mal
Haya Salud
Pues no sabía que blogger tenía elementos, o widgets, condicionales. Si te quejas de no poder poner elementos lógicos es que no conoces las etiquetas básicas de struts.
De todos modos, muy bien explicado. La segundo me ha gustado más (a mi no me importa meter código, pero si es una vez en la vida) pero veo que has optado por la segunda.
Enhorabuena y gracias por el excelente tutorial.
gracias!
Estoy hasta de los maditos template y codigos porque todo es atn complicadoooo voy a llorar... me he pasado dos dias enteros en la compuadora tartando de hacer un blog bonito pa toparme con esto de las condenadas subcategorias.. que ls kiero las necesito y no ya ahora todo codigo lo veo en chino.(sin ofender) no me lo puedes poner en buen cristiano o a lo tonto se que ya has hecho bastante con la esplicacion y valla que es larga pero no tienes por ahi un copy page mas simple? Graciasssss..
La Bloguería: gracias por el comentario y de nada.
Hola Aniko.
El código no está en chino ni te lo puedo poner en cristiano, porque no funcionaría. Está en el lenguaje que tiene que estar, que es el que entiende Blogger (una mezcla de HTML y XML).
Lo primero de todo es que, si estás empezando un blog, es mucho mejor que lo hagas sobre Wordpress, que te ofrece una mejor gestión y más posibilidades, como las subetiquetas de forma nativa.
Si tiene que ser Blogger, entonces no hay una solución sencilla. Yo propongo dos y la primera (falsas etiquetas) es menos engorrosa y fácil. Sólo tienes que añadir palabras escondidas en los posts que quieras subetiquetar. Luego, en la sección del template donde están las etiquetas (¿llegaste a identificarla?) tienes que poner un enlace a la búsqueda de esas palabras en el blog. Vuelve a leer la primera parte y si tienes alguna duda o problema en concreto te lo resuelvo encantado. No es tan fácil como copiar y pegar: no funcionaría.
Por otro lado, te aseguro que estar dos días intentando hacer algo sin resultado no es nada. Yo estuve semanas pensando en ello hasta que se me ocurrió la idea (que ahora me parece simple) y varios días hasta que quedó completo y funcionando. No te desesperes por eso y ánimo.
Siendo diseñadora gráfica seguro que también puedes pedir ayuda a alguien que entienda un poco de html.
Un saludo y suerte.
He estado buscando en Google de manera exhaustiva y tu blog sale en la primera posicion en lo que respecta a la creacion de subetiquetas pata blogger.
Felicitaciones por el aporte desinteresado en la materia.
Yo he utilizado tus explicaciones para extender el ancho del blog y para utilizar la funcionn "leer mas".
Saludos desde la Argentina
Gracias, chacanoticias, espero que este post pueda servir a la gente... aunque lo dudo un poco. Es ciertamente lioso.
Un saludo!
Llevo toda la tarde intentando y na!xDD
Na de na! El codigo que me sale a mi, en el Widget de Categorias es distinto al tuyo asi que no se como ira esto!=S
Hola Jxrdii,
intentarlo una tarde es poco. Yo no puedo ver cómo es el código del widget si tu no lo pones en el comentario, así que no tengo modo de ayudarte.
Piense que las etiquetas como lista en la página web son generadas por el servidor de blogger en algún bucle. Intenta encontrarlo para meterle mano.
Si no sabes un poco de informática entiendo que es difícil. O quizá no se pueda en tu blog, quien sabe.
Un saludo y suerte.
He implementado la primera opción en mi blog fueradellimite.blogspot.com.
Tiene muchas desventajas en cuanto a que ya no tienes control sobre las subetiquetas, (puesto que ya no son reales), no se pinta cuantas hay de cada tema y lo peor, cuando pinchas la etiqueta Padre desaparecen las hijas.
Sin embargo, así aparece más ordenado por lo que prefiero mantener esta medio chapuza.
Gran idea, sin tu ayuda no lo habría podido conseguir.
Felicidades por el aporte.
Publicar un comentario