Manejando las etiquetas: Excluir o incluir
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>
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 > 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>
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('segunda','tercera', 'sexta');
<b:loop values='data:labels' var='label'>
var cualEtiqueta = '<data:label.name/>';
if(misEtiquetas.indexOf(cualEtiqueta) > -1) {
document.write("<li><a expr:href='data:label.url' rel='nofollow'><span><data:label.name/></span></a>(<data:label.count/>)</li>");
}
</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('segunda','sexta');
<b:loop values='data:labels' var='label'>
var cualEtiqueta = '<data:label.name/>';
if(misEtiquetas.indexOf(cualEtiqueta) == -1) {
document.write("<li><a expr:href='data:label.url' rel='nofollow'><span><data:label.name/></span></a>(<data:label.count/>)</li>");
}
</b:loop>
</script>
</ul>

































36 comentarios:
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
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.
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
Esto contesta a mis inquietudes sobre las etiquetas y categorías?? O no tiene nada que ver?
Saludos;)
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.
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!!!
ohh perdón me olvidé, en las ayudas no figura éste inconveniente, por lo que no sé qué hacer, gracias!!!
Ya entendí, Graciela ¿Es sólo un cambio de texto en esa solapa o han desaparecido las funciones que te permiten editar las plantillas?
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!!!
¿No será que recuperó una plantilla clásica ?
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".
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!!!
Es que en las clásicas, la personalización es limitada, allí está el problema.
me sugieres que cambie por????
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
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!!!
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
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.
Gracias por tu repuesta tan rapida, lo pruebo y te comento alguna cosa.Rafael
Lamento no poder ser de más ayuda, casi fue una respuesta instintiva :)
Ojalá logres resolverlo.
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.
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.
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.
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 :$
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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
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.