Manejando las etiquetas: Excluir o incluir

Etiquetas etiquetas etiquetas etiquetas, habría que hablar de las etiquetas, si sirven o no sirven o mejor dicho para qué sirven pero eso será en otro momento. Las limitaciones de acceso a los datos de Blogger hacen que feeds y etiquetas sean claves a la hora de dar una vuelta de tuerca a este asunto de los blogs y tratar de salirse de los esquemas tradicionales.

Graciela preguntaba en un comentario si era posible excluir etiquetas en el truco que mostraban en La Bloguería y que utiliza una variante de Cumulus, algo imprescindible si tenemos muchas ya que no está diseñado para soportar demasiados textos.

La respuesta quedará pendiente porque no se me ocurre nada que permita establecer condiciones y trasferírselas al archivo de Flash; sin embargo, como una cosa trae la otra, por ahora, empecemos con alguna prueba sencilla y veamos si es posible listar etiquetas basándonos en alguna condición.

Es sencillo de probar ya que podemos agregar tantos elementos Etiqueta como se nos ocurra y cada uno es independiente del otro así que creamos uno y lo ubicamos en la plantilla. Luego, en Edición HTML expandimos los artilugios y vamos a ver siempre el mismo código:
<b:widget id='LabelX' locked='false' title='El Titulo' type='Label'>
<b:includable id='main'>
<b:if cond='data:title'>
<h2><data:title/></h2>
</b:if>
<div class='widget-content'>
<ul>
<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: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:loop>
</ul>

<b:include name='quickedit'/>
</div>
</b:includable>
</b:widget>
La única diferencia será el atributo ID que tendrá un número diferente y el atributo TITLE que será el que le demos al crearlo.

NOTAS: En todo ese código, siempre vamos a reemplazar lo marcado en color que es la lista de las etiquetas y en todos los casos estoy excluyendo un dato que coloca Blogger (data:blog.languageDirection) para definir la dirección del texto ya que asumo que estamos escribiendo de izquierda a derecha.

La primera condición es la más sencilla, vamos a mostrar sólo las etiquetas que tengan un mínimo de entradas. Si quisiéramos listar las que tengan más de cinco entradas escribiríamos:
<ul>
<b:loop values='data:labels' var='label'>
<b:if cond='data:label.count &gt; 5'>
<li>
<b:if cond='data:blog.url == data:label.url'>
<data:label.name/>
<b:else/>
<a expr:href='data:label.url'>
<data:label.name/>
</a>
</b:if>
(<data:label.count/>)
</li>
</b:if>
</b:loop>
</ul>
En el ejemplo, agregamos una condición al bucle:
SI la cantidad de entradas en la etiqueta (data:label.count) es mayor que 5 la mostramos, sino, la ignoramos.

Quiere decir que podemos establecer cualquier condición numérica y mostrar o no mostrar ciertas etiquetas. Veamos si podemos usar condiciones más sofisticadas, por ejemplo, SOLO mostrar algunas y EXCLUIR otras.

Para eso necesitamos recurrir al JavaScript y generar alguna clase de "lista" (un array) donde agreguemos las etiquetas que queremos evaluar. Supongamos que tenemos seis categorias que, en un rapto de originalidad llamo: primera segunda tercera cuarta quinta sexta.

Este, sería el código para mostrar solamente las etiquetas segunda tercera y sexta:
<ul>
<script type='text/javascript'>
var misEtiquetas = new Array(&#39;segunda&#39;,&#39;tercera&#39;, &#39;sexta&#39;);
<b:loop values='data:labels' var='label'>
var cualEtiqueta = &#39;<data:label.name/>&#39;;
if(misEtiquetas.indexOf(cualEtiqueta) &gt; -1) {
document.write(&quot;<li><a expr:href='data:label.url' rel='nofollow'><span><data:label.name/></span></a>(<data:label.count/>)</li>&quot;);
}
</b:loop>
</script>
</ul>

¿Qué hicimos? Creamos una array llamada misEtiquetas donde colocamos (entre comillas y separadas por comas) la lista de etiquetas a ser mostradas. Luego, en el bucle, tomamos cada etiqueta (cualEtiqueta) y usamos una función (indexOf) para verificar si ese elemento es o no es parte de ese array. Esa función devuelve un valor de -1 si la respuesta es NO y un valor positivo si la respuesta es SI. Cuando verificamos esto último, usamos document.write() para escribir el item.

Lo mismo podemos hacer para excluir catergorías. simplemente, evaluamos la condición contraria; vamos a excluir las categorías segunda y sexta:
<ul>
<script type='text/javascript'>
var misEtiquetas = new Array(&#39;segunda&#39;,&#39;sexta&#39;);
<b:loop values='data:labels' var='label'>
var cualEtiqueta = &#39;<data:label.name/>&#39;;
if(misEtiquetas.indexOf(cualEtiqueta) == -1) {
document.write(&quot;<li><a expr:href='data:label.url' rel='nofollow'><span><data:label.name/></span></a>(<data:label.count/>)</li>&quot;);
}
</b:loop>
</script>
</ul>
¿Y para qué podría servir esto? ¡Ahhhhhh! Esa es una buena pregunta confuso

36 comentarios:

Graciela

JMIUR hola!!!, quería preguntarte porqué puede ser que no me aparezca la etiqueta diseño de mi blog, luego que he cambiado la plantilla (grave error), muchas gracias!!!
Graciela de Palomas

Claudio - Poca Tinta

Interesante, pero me quedo con tu ultima pregunta.

Ya se vera en que usarla, "ya que en gustos y colores..."

Tengo una consulta sobre WP-Cumulus, como se puede hacer para que al clickear se muestre en otra pagina, es que los use para link de blogs que leo y no para tags, y se abre sobre mi blog.

..NaNy..

Hola tu blog me parece muy bueno y para mi es de mucha ayuda. Por favor como puedo poner la fecha como tu en las entradas si puedes me das el codigo con imagen y todo. saludos y gracias

k_nelita

Esto contesta a mis inquietudes sobre las etiquetas y categorías?? O no tiene nada que ver?
Saludos;)

JMiur

Graciela: ¿en cuál blog está es etiqueta?

Claudio: la única forma de hacer que los enlaces se abran en otra ventana con cualquier variante de Cumulus es modificar el archivo de Flash.

NaNy: Cómo hacer un calendario, está esxplciado en este post

k_nelita: En realidad, no, sólo son "pedacitos". Imagino que lo que necesitas es una respuesta completa que por ahora no tengo.

Graciela

JMIUR hola nuevamente,no me sé explicar. Hice un cambio de plantilla, por otra del mismo blogger. Ha quedado sin poder acceder ha realizarle algún cambio, en el escritorio donde dice Diseño hace días que dice Plantilla. Muchas gracias!!!

Graciela

ohh perdón me olvidé, en las ayudas no figura éste inconveniente, por lo que no sé qué hacer, gracias!!!

JMiur

Ya entendí, Graciela ¿Es sólo un cambio de texto en esa solapa o han desaparecido las funciones que te permiten editar las plantillas?

Graciela

Cariño si quiero puedo cambiar la plantilla por otra, personalizar plantilla no funciona. Donde debería decir Diseño, figura siempre Plantilla. He vuelto a poner la mínima. ¿Será que no se ha actualizado???.
Antes era simple, cambiabas la plantilla, podías darle color, poner una cabecera...lo he estaba realizando hasta que no me permite hacer ningún cambio. Gracias mi vida por contestar!!!

Gem@

¿No será que recuperó una plantilla clásica ?

JMiur

Lo que pregunta Gem@ es muy lógico. Si se trata del blog PALOMAS DE PAPEL; casi te diría que tiene razón porque el código fuente que veo no es el "normal". Parece ser una plantilla mínima pero de las "clásicas" y no de las plantillas "nuevas".

Graciela

ohhh Gema y JMiur sí recuperó una mínima de las clásica y no puedo ingresar a personalizar. Personalizar está pero no funciona´. JMiur es Palomas. Gracias a los 2!!!

JMiur

Es que en las clásicas, la personalización es limitada, allí está el problema.

Graciela

me sugieres que cambie por????

JMiur

Personalmente, sugiero que coloques una plantilla del nuevo modelo. No importa cual. Debe haber un botón o enlace que indique la forma de convertirla AYUDA DE BLOGGER

Graciela

JMIUR ésa función no 'funciona' en Palomas, sí en el otro blog. Pinchas ahí, no vas a ningún lado...en fin...quedará así. Te agradezco muchísimo, saludos y sigo leyéndote!!!

17130lescalaesport

Hola JMIUR, en primer lugar felicidades por el blog, soy asiduo visitante de tu blog pero es la primera vez, que hago un comentario, estoy montando un blog para informar de los difentes equipos y deportes que se practica em mi pueblo y creo que he encontrado una utilidad a la opcion de excluir etiquetas, he creado dos bloques de etiquetas una que son NOTICIAS en el que solo hay noticias y la otra donde estan las referente a las cronicas de los diferentes partido de cada semana de los equipos (con feeds) pero tambien me salen las etiquetas noticias que serian la excluiria, pues las tengo en el otro grupo.
Te pido disculpas por extenderme tanto, gracias de antemano i te adjunto direccion del Blog.
http://ajuntamentleague.blogspot.com/
GRACIAS,Rafael

JMiur

Rafael:
Por lo que veo, estás usando un script apra mostrar esa parte de Croniques lo cual complica el tema del filtro. Aparentemente, lo que habría que hacer es modificar ese escript de tal modo de evaluar la etiqueta Noticias antes de mostrarla.

Entiendo que eso se muestra con:
text += "<li">"<a href='"+posturl+"'">" + posttitle + ""</a">"</li">";
pero, no sabría decirte exactamente cómo hacerlo, es algo que escapa a mi conocimiento.

17130lescalaesport

Gracias por tu repuesta tan rapida, lo pruebo y te comento alguna cosa.Rafael

JMiur

Lamento no poder ser de más ayuda, casi fue una respuesta instintiva :)

Ojalá logres resolverlo.

el Zambullista

Hola, JMiur. Esto es precisamente lo que estaba buscando, pero tengo un problema. Además de querer separar dos clases de etiquetas (una, de temas; otra, de tramas), que puedo hacer con la explicación de este post, también quisiera que cada grupo de etiquetas fuera desplegable para mostrar una lista con los títulos asociados, como explicás en este post.
Y ya que te molesto, la hago completa: ¿puede hacerse que además de desplegar una lista la contraiga haciendo de nuevo click sobre ►, como en Archivo del blog? (Como seguí su explicación para hacer desplegable mi índice, esta última pregunta también se la hice a Rosa; pero está de viaje.)
Muchas gracias por adelantado. Excelente tu blog. Saludos.

JMiur

Imagino que es posible. Debería ver un ejemplo completo online para darte una idea de por donde seguir pero, no creo que hubiese porblemas ya que cualquier bloque es desplegable y contraible.

el Zambullista

En la sidebar de mi blog está lo que quiero modificar (lo llamé "Índice de temas y tramas ranqueados"). Por un lado, quiero que un segundo click sobre el triángulo contraiga la lista de post. Por otro lado, quisiera combinar ese script que hace desplegables las etiquetas con el que explicás acá para excluir unas y dejar otras, así puedo tener un grupo de etiquetas desplegables bajo la categoría de "Temas" y otro bajo la categoría de "Tramas". Ahora puedo tener todas las etiquetas desplegables en un solo grupo o dos grupos de etiquetas no desplegables, pero no sé cómo hacer para combinar ambos efectos. Ojalá haya logrado hacerme entender. Gracias de nuevo, JMiur.

JMiur

Creo entender pero el tema me excede; modificar el script que expande las etiquetas está basatante más allá de mis conocimientos. Ni siquiera se me ocurre como guiarte, es un cóigo bastante complejo de entender :$

el Zambullista

No hay problema. Creo que entonces voy a poner tres elementos: las dos clases de etiquetas no desplegables ordenadas por frecuencia (un ranking de temas y otro de tramas) y un índice de entradas con todas las etiquetas ordenadas alfabéticamente. Perdón: me quedé pensando en voz alta en tu blog.
Muchas gracias por contestar tan rápido.

JMiur

Es lo que yo haría, tanto pensar en voz alta como aplicar esa solución :D

Me parece lo lógico ya que pueden agregarse varios elementos Etiquetas así que no hay problema en tener varios con distinto tipo ordenadas de diferente forma.

el Zambullista

Solución implementada satisfactoriamente, salvo por un detalle: en ambos rankings cada nombre de etiqueta queda pegado al número entre paréntesis (del que no quiero prescindir, por tratarse justamente de un ranking). ¿Alguna idea de cómo separarlos con un espacio? Gracias de nuevo; prometo que será la última.

JMiur

Podrías agregarle propiedades CSS ya que el enlace esta en un span y el numero no. Por ejemplo:

#Label1 a span, #Label2 a span {padding-right:10px}

Eso, separaría el número 10 pixeles.

el Zambullista

Muchas gracias por la ayuda. Resuelta la separación entre nombres de etiquetas y números.
Pero el Internet Explorer 8 (que no uso, pero chequeo) tiene un "pero": no muestra los dos elementos Etiquetas agregados y filtrados (sí los títulos: "Ranking de temas" y "Ranking de tramas"). Me reporta estos errores:

Detalles de error de página web

Mensaje: El objeto no acepta esta propiedad o método
Línea: 1439
Carácter: 1
Código: 0
URI: http://zambullidas.blogspot.com/

Mensaje: El objeto no acepta esta propiedad o método
Línea: 1533
Carácter: 7
Código: 0
URI: http://zambullidas.blogspot.com/

Mensaje: 'a9501b' no está definido
Línea: 1827
Carácter: 1
Código: 0
URI: http://zambullidas.blogspot.com/

El último punto es el color de texto de la sidebar, que está así desde siempre y no vi que antes me lo marcara, pero tampoco debe importar mucho. Supongo que los dos primeros son el problema que impide ver los dos elementos Etiquetas agregados. Un amigo me dijo que lo mismo pasa en el Safari. ¿Alguna idea? Gracias de nuevo.

JMiur

Eso parecería que es porque hay un bug de IE con una función llamada indexOf.

Lo más que puedo agregar es este enlace como referencia al problema y una solución aunque no lo he probado.

el Zambullista

Después de varios intentos fracasados, te iba a escribir que te agradecía por la ayuda y que me iba a resignar a que los visitantes con IE tuvieran problemas. Buscando esta entrada encontré otra para conseguir lo mismo. Hubiera preferido quedarme con este método, porque escribo una sola lista de etiquetas y la excluyo o la hago excluyente, en lugar de escribir dos listas de etiquetas excluidas. Pero probé el otro método y, aunque dio ese trabajo de más (y el que dará si agrego etiquetas), quedó igual y el molesto IE no protestó.
Gracias por todo, otra vez.

JMiur

Perfecto. Todo método es válido. Es una pena que el script perturbe tanto proque es mas sencillo pero, no hay mucho que hacer al respecto.

nakahito

Hola no entendi la parte del script, lo de primera segunda tercera.... y donde colocarlo , esta buenisimo el blog pero me hace romper la cabeza para entender algunas cosas jaja .. ojala me ayudes gracias :D

nakahito

Hola de nuevo me funciono, solo hay un pequeño problema, yo habia quitado los numeros de las etiquetas , pero las que incluyo con el script si me salen con numeros, alguna forma de quitarlos? , gracias de nuevo y disculpa ls molestias :P

nakahito

perdon por los 3 comentarios seguidos creo que estoy copiando en el lugar equivocado el script porque ya no me funciona :( espero tu ayuda mejor jeje

JMiur

El dato con la cantidad es <data:label.count/>

Lo otro, no podría contestarlo purque no sé donde está.

¿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.