Plantilla Blogger. Mostrar en entradas sólo ciertas etiquetas | Oloblogger Desde el artilugio de la plantilla Blogger que genera la impresión de las etiquetas de cada entrada, es sencillo especificar cuáles mostrar ...

19 de septiembre de 2015

Plantilla Blogger. Mostrar en entradas sólo ciertas etiquetas

Desde el artilugio de la plantilla Blogger que genera la impresión de las etiquetas de cada entrada, es sencillo especificar cuáles mostrar y cuáles no.

Supongamos que en nuestro blog usamos muchas etiquetas pero que realmente la mayoría no son realmente para catalogar su contenido. Me refiero al caso en que hay un conjunto de unas pocas que siempre usamos en las diferentes entradas porque realmente sirven para clasificarlos, pero además existen otras muchas que se crean con otros fines.

Un ejemplo de esto serían por ejemplo las posibles etiquetas genéricas Pintura, Escultura, Arquitectura, etc. de entre las cuales TODAS nuestras entradas tendrían una obligatoriamente, pero a las que bien podríamos añadir otras para:

  • matizar los temas genéricos (Impresionismo, Cubismo, Realismo...)
  • ayudar al gadget de entradas relacionadas a sacar más relaciones (Velázquez, Picasso, Monet... 1, 2 y 3)
  • marcar internamente ciertos contenidos a efectos de maquetación, condicionando con un si/no se verá si lleva esta etiqueta (portadaSI, portadaNO...)
  • mostrar mediante un feed una cosa muy concreta (http://nombredelblog.blogspot.com/feeds/posts/default/-/nombredelaetiqueta)
  • crear una portada ocultando el artilugio Blog y luego usar feeds por etiquetas especiales para ver el contenido por secciones
  • etc.

En fin, que puede ser útil para muchas cosas añadir etiquetas no sólo para clasificar temas y que si lo hacemos así, también podría no interesarnos que en las entradas se vieran ciertas de ellas.


Para ello lo más fácil es manipular el código original que las genera y que originalmente es así:

(1) <b:if cond='data:post.labels'>
(2) <data:postLabelsLabel/>
(3) <b:loop values='data:post.labels' var='label'>
(4) <a expr:href='data:label.url' rel='tag'><data:label.name/></a>
(5) <b:if cond='data:label.isLast != &quot;true&quot;'>, </b:if>
(6) </b:loop>
(7) </b:if>

Para que se entienda lo que hace, siguiendo el orden de las anteriores líneas:

  1. Se comprueba si existen etiquetas guardadas en la correspondiente variable (data:post.labels). Si no se añadió ninguna etiqueta al post, ya no se ejecuta el resto que hay a continuación
  2. Se imprime el nombre genérico que hemos asignado a nuestras etiquetas: Temas, Categorías, Etiquetas, Secciones...
  3. Se inicia un bucle que recorrerá todas las etiquetas que contiene una entrada concreta, desde la primera hasta la última (por orden alfabético)
  4. Se crea un enlace que lleva a la página de etiquetas de la que en este momento marca el bucle y dentro se imprime el nombre de la etiqueta
  5. Se comprueba si es la última de la lista y en caso contrario se añade una coma para separarla de la siguiente que se imprimirá
  6. El cierre del bucle hace que se pase a la siguiente etiqueta de la lista repitiendo lo que se ordena en su interior (5 y 6). Cuando llega a la última continúa se termina la repetición de tareas y se pasa a 7 
  7. Se cierra el condicional


Pues sabiendo esto y echando mano de uno de los nuevos operadores que hace unos meses incorporó Blogger, el de pertenencia a un conjunto de valores, se puede cambiar el anterior código por este otro y con ello lograremos que en cada entrada sólo se muestren las etiquetas que queremos.

<b:if cond='data:post.labels'>
  <data:postLabelsLabel/>
  <b:loop values='data:post.labels' var='label'>
    <b:if cond='data:label.name in [&quot;Etiqueta1&quot;,&quot;Etiqueta2&quot;,&quot;Etiqueta3&quot;]'>
      <a expr:href='data:label.url' rel='tag'><data:label.name/></a>
      <b:if cond='data:label.isLast != &quot;true&quot;'>, </b:if>
    </b:if>
  </b:loop>
</b:if>

En el ejemplo serían las que nombre como Etiqueta1, Etiqueta2 y Etiqueta3, pero la lista puede incluir la cantidad de ellas que queráis, simplemente teniendo cuidado de que vayan entre comillas (&quot;) y separadas entre sí mediante comas.

Manipulando este código de otras maneras e incluyéndolo con condiciones en otras partes de la plantilla, podremos incluso lograr que ciertas entradas con ciertas etiquetas se vean o no se vean en algunos sitios, pero esto ya es algo que cuesta más explicar de una manera genérica para todo tipo de plantillas, así que os lo dejo como tarea para casa.

¿Vemos otro post al azar por si le encuentras utilidad o quizás prefieres ser más metódico y suscribirte a nuestras entradas por correo? También puedes imprimir este artículo y por supuesto compartirlo en redes sociales si fue de tu agrado.

Compartir
Copy URL

Y muchos más artículos interesantes si nos sigues en...

follow us in feedly

37 comentarios :

  1. Gracias por compartir siempre y hasta octubre.

    ResponderEliminar
  2. Como siempre gracias, y puede que te escriba al regreso que necesito otro trabajito low cost, saludos!

    ResponderEliminar
  3. Es una chulada el nuevo código que incorporó Blogger, me ha ayudado a darle "salida" a unas cosas que tenía pendientes. Por ejemplo siguiendo la idea de usar etiquetas, estaba ideando todo el proceso para agregar el nombre del autor como tal, y ocultarla en la entrada. Luego, personalizar el widget de etiquetas que muestraría el número de entradas publicadas respectivamente por cada autor. Pues lo conseguí al fin. Pero no logré que Blogger entendiera cuál es la última etiqueta tomando en cuenta que se ocultará una de ellas...

    Oloman, ¿verificaste que no hubiera problemas con la coma que aparece separando cada etiqueta? Es decir que no vaya a ponerse después de la última etiqueta.

    A mi me parece bien tu planteamiento, sin embargo creo que obtener lo contrario tal vez sería más práctico, es decir, poner las etiquetas que NO quieres que aparezcan, en lugar de las que sí. Lo digo porque tal vez sean más las etiquetas que quieres que aparezca que las que no.

    <b:if cond='data:label.name not in {"Etiqueta1","Etiqueta2","Etiqueta3", "Etiqueta4"}'>

    Saludos y una abrazo ;)

    ResponderEliminar
  4. Wow! Buenísimo, me parece súper útil, lo guardo en favoritos y luego lo pruebo en mi blog de pruebas:3
    Muchas gracias por compartirlo! Besotes~

    ResponderEliminar
  5. Relacionado con las etiquetas, he comprobado en mi blog (http://viana-digital-archive.blogspot.com.es/) que éstas se muestran ordenadas incorrectamente. Se lía con las letras con tilde y las eñes tampoco no las pone bien. Un ejemplo: Ayuntamiento, Azcona, Añoa y Busto... Libros, Longar, lápida, López de Barnuevo... ¿Hay alguna forma de hacer que las ordene siguiendo las reglas del español?
    Saludos

    ResponderEliminar
    Respuestas
    1. No la hay Administrador. A esto ya te contesté por otro sitio ¿no? XD

      Eliminar
  6. Saludos Oloman, intento hacer esto de ocultar algunas entradas que tengo por secciones pero el codigo no me funciona, sera la plantilla, o sera que dentro de la misma no es el lugar indicado...captura parte del codigo http://prntscr.com/8tqinp he encontrado otras formas y ninguna funciona, o si lo hace me deforma las medidas de las imagenes.... Gracias espero poder resolver esta situacion

    ResponderEliminar
    Respuestas
    1. PD: creo que ya lo soluciones, o ponia mal el codigo o se enfado blogger de que lo estubiera actualizando a cada rato, mi index http://911compufix.blogspot.mx/index.html y la de servicios como debe de ser http://911compufix.blogspot.mx/search/label/Servicios solo que en la pagina de aterrizaje no me aparece, que lata.. Gracias

      Eliminar
    2. Me tendrías que dar más detalles sobre lo que quieres hacer Alberto, porque con eso que me pasas no veo la relación con el contenido de mi entrada.

      Eliminar
  7. Hola Oloman,

    tengo la plantilla Minute de Bthemez. En los post, debajo del título aparece una sóla etiqueta, y ya en el footer aparecen todas las demás que tenga puestas. Me gusta este sistema porque la que aparece bajo el título la utilizaría como categoría general (por ejemplo "viajes"),así a simple vista se ve de qué trata el post, y las etiquetas del footer ya serían más específicas (por ejemplo "riviera maya, méxico, playa, caribe).

    Ahora mi problema: la etiqueta del título, no aparece la que yo quiero, si no que coge la primera que aparece por orden alfabético. Así que si en un post tengo agregadas las etiquetas "alemania, Viajes", no me aparecerá Viajes como categoría general, si no Alemania. No se si me expliqué.

    Entonces no se si lo entendí bien y puedo aplicar este código que nos pusiste aquí (porque ya es una plantilla prediseñada), una condicional o cómo lo podría solucionar?

    Gracias como siempre por todo

    ResponderEliminar
  8. Hola. Con frecuencia me nombráis los nombres de plantillas que utilizáis como si yo fuera capaz de conocerme todo el código de todas ellas y su funcionamiento... y no es así. Ya me gustaría tener una memoria capaz de eso :)

    En su lugar lo que si me viene normalmente mejor es saber la dirección de vuestro sitio para ver el código que tenéis cada uno en cuanto a lo que preguntáis. Pero en fin, voy a intentar echarte una mano con lo que pudiste leer en esta entrada.

    En el código que viste hay una parte entre corchetes que precisamente relaciona las etiquetas que SÍ queremos que se vean. De manera similar -que no idéntica- podrías aprovechar eso para añadir una condición en el bucle (loop) que genera las entradas para que sólo te muestre la que tiene determinada etiqueta.

    Habría que hacer bastantes modificaciones como para poderte explicar en detalle, pero esa es la idea.

    ResponderEliminar
  9. Hola. Seguramente ya te lo habrán preguntado pero no consigo encontrar la respuesta. Me gustaría saber si es posible ordenar las etiquetas del post de alguna forma que no sea alfabeticamnete. Mi problema es que en la página principal de mi blog (http://covitacahandmade.blogspot.com) encima del título me aparece una etiqueta, que por defecto es la primera de la lista de etiquetas... Hay alguna forma de que yo pueda elegir esa etiqueta??
    Mil gracias!!!!!

    ResponderEliminar
    Respuestas
    1. Sí que puedes, pero no es fácil de explicar aquí. Puedes excluir algunas como viste en este post, pero como solución sencilla ¿por qué no ocultas las etiquetas en portada en lugar de sacar sólo una?

      Eliminar
  10. hola olo !

    llegue aqui, buscando como poner solo franmentos de entrada en mi blog. y note que has respondido hoy.


    mi pregunta es la siguiente: como puedo poner solo un frangmento de las entrada en la portada?

    espero haberme explicado sino tratare de esta manera.

    en mi blog: https://tendencias1.blogspot.com las entradas son muy largas y muestro 7 en la portada, me gustaria que salga un parrafo y un boton leer mas.

    Gracias quedo atento.
    Dario.

    ResponderEliminar
    Respuestas
    1. Hola Darío. Eso lo lleva de serie Blogger desde hace tiempo. Edita cualquier post y fíjate en la barra de herramientas del editor de entradas. El icono que es como una hoja partida en dos te sirve para insertar en el punto del texto que tú quieras, un salto. En portada sólo saldrá el texto hasta ese punto que marques.

      Para el resto de entradas ya haces lo mismo y por supuesto lo puedes incluir al redactarlas por primera vez.

      Eliminar
  11. Hola Muchas felicidades por el blog y todas les explicaciones!
    Una preginta, No se como quitar el texto que me sale en el apartado ENtradas del blog : "------ pagina de incio -----" y "ver mensages: atom." (en Main), querria suprimir el texto i la linea de diseño, para darle un aspecto más de sitio web.
    Alguien sabe como hacerlo?
    muchisimas gracias,
    carlos

    ResponderEliminar
    Respuestas
    1. Sólo tienes que añadir a tu CSS algo así:

      .blog-pager {display: none;}

      .blog-feeds, .post-feeds {display: none;}

      Eliminar
  12. Hola, muy buen tutorial como siempre. te escribo con una duda que tengo sobre mi plantilla: en el apartado de posts relacionados aparece el atributo "" que toma la última etiqueta para mostrar el contenido relacionado, pero me di cuenta de que la mayoría de mis posts incluyen una etiqueta con una diagonal, es por eso que no aparecen las miniaturas, ¿hay alguna forma de cambiar el atributo "islast" para que tome cualquier otra etiqueta y muestre el contenido relacionado con la misma? Saludos y muchas gracias de antemano. ;)

    ResponderEliminar
    Respuestas
    1. Joe, no sé contestarte. Tendría que estudiar el script completo que genera esas entradas relacionadas y le he echado un vistazo pero a simple vista no lo veo. Aunque casi todos se basan en el mismo sistema, todos son distintos. Lo siento.

      Eliminar
  13. Estimado Oloman:
    Por un motivo que desconozco, no me aparecen las etiquetas al final de cada entrada ni tampoco los botones para compartir en redes sociales. En Diseño>Entradas del blog he marcado la opción de que aparezcan ambas así como el icono de Edición rápida (este sí se muestra).

    Las entradas están etiquetadas y de hecho, el menú desplegable creado a partir de estas funciona correctamente.

    ¿Puede ser un problema que se resuelva retocando el CSS? ¿Habré borrado alguna parte del código al retocar la plantilla? ¿Se podría introducir nuevamente para que funcione tal y como lo tienes en tus entradas?

    Te agradecería mucho, como siempre, tu ayuda. Esta es la dirección del blog en cuestión: http://rqrescritoresnegros.blogspot.com.es/

    Las "falsas" etiquetas que aparecen ahora al final de las entradas no son más que texto generado en estas sin enlace alguno.

    Un saludo.

    ResponderEliminar
    Respuestas
    1. Hola RqR. Parece que solucionaste el asunto de las etiquetas ¿no? Yo las estoy viendo correctas actualmente.

      Eliminar
    2. Buenos días, Oloman. Sí, después de probar y fallar mil veces conseguí que aparecieran las jodías etiquetas y luego editarlas. Solo me queda quitar la palabra ETIQUETAS a la izquierda, aunque no se ve porque tiene el mismo color del fondo.

      Mil gracias por tomarte la molestia de visitar el blog y por contestarme. Si puedo ayudarte en algo, ya sabes dónde estamos.

      Saludos.

      Eliminar
  14. "Manipulando este código de otras maneras e incluyéndolo con condiciones en otras partes de la plantilla, podremos incluso lograr que ciertas entradas con ciertas etiquetas se vean o no se vean en algunos sitios"

    Justo eso es lo que quiero hacer para mi widget de entradas relacionadas. ¿Podrías darme un ejemplo de como modificar el código para que no se muestren los posts de ciertas etiquetas?

    Saludos, y gracias de antemano.

    ResponderEliminar
    Respuestas
    1. Hola. Esto no es la solución para ti.
      Tus entradas relacionadas se generan con un JavaScript y ese es el que habría que modificar incluyendo condiciones para que ciertas etiquetas no se mostraran. Lo que pasa es que en tu plantilla, ese código aparece comprimido y codificado, por lo que no hay posibilidad de modificarlo si no eres el creador del código. Tendrás que consultar a quién te proporcionó esa plantilla.

      Eliminar
    2. Gracias por responder Oloman. He leído una gran cantidad de tus artículos, y me han sido de mucha utilidad.

      Ya veo, entonces creo que lo más factible será eliminar ese gadget e incluir algún otro. Por ejemplo éste que compartiste hace tiempo

      http://www.oloblogger.com/2015/08/entradas-relacionadas-miniatura-vertical-rwd.html

      Tomando como base ese código, ¿que tendría que modificar para que excluya posts que contengan una o varias etiquetas en particular (las que uso como categorías y los destacados)y que no aparezcan en relacionadas?

      Eliminar
    3. Pues tendrías que meter la llamada al script dentro de una condición como la que viste aquí, con la relación de etiquetas que SÍ quieres que relacione:
      <b:if cond='data:label.name in [&quot;Etiqueta1&quot;,&quot;Etiqueta2&quot;,&quot;Etiqueta3&quot;]'>
      <script expr:src='&quot;/feeds/posts/default/-/&quot; + data:label.name + &quot;?alt=json-in-script&amp;callback=related_results_labels_thumbs&amp;max-results=6&quot;' type='text/javascript'/>
      </b:if>

      O bien cambir el "in" por un "not in" y dentro de la lista poner las que NO quieres que salgan.

      Eliminar
    4. Excelente, justo lo que quería. Ya lo implementé en mi blog de pruebas y funcionó a la perfección. Ahora a aplicarlo al principal. Un saludo y de nuevo gracias.

      Eliminar
    5. Había realizado otra pregunta, pero la resolví experimentando :) Ahora bien, me surgió otra duda. Noté que en los relacionados aparece el mismo post raíz, ¿hay alguna forma de modificarlo para que esa entrada raíz que no redunde?

      Eliminar
    6. Y otro problema, me di cuenta que parece que el gadget se superpone al contenido de la entrada o algo por el estilo, ya que el cursor no aparece como selector en el texto, ni me permite abrir ninguna imagen con el lightbox, tampoco reproducir los videos embebidos. Lo único que agregué fue el código del post. ¿Qué solución me sugieres? Creo que tiene que ver con modificar el tamaño del h4, pero no se me ocurre como.

      Eliminar
    7. Hola. Prueba a quitar lo que pusiste de las etiquetas y comprueba si sigue fallando para descartar que sea esto. En un principio las relacionadas no deberían tener nada que ver... y tampoco el lightbox.

      Eliminar
  15. Hola Oloman, gracias. Ya solucioné la cuestión del h4 modificando la position a "initial". Sigue pendiente mi primera duda, ¿cómo hacer que en relacionadas no aparezca la misma entrada en la que se encuentra el lector? Que no redunde.

    ResponderEliminar
    Respuestas
    1. ¿Seguro que está pendiente? Ver comentario 14.1

      Eliminar
    2. Si, creo que no me expliqué bien. Me refiero a la pregunta del comentario 14.5. Lo que trato de hacer es modificar el código de este artículo (http://www.oloblogger.com/2015/08/entradas-relacionadas-miniatura-vertical-rwd.html) para que en ese gadget no aparezca la misma entrada en la que se encuentra el lector.

      Un ejemplo:

      Si aquí tuvieras instalado el gadget de relacionados, que descarte automáticamente el artículo y no relacione "Plantilla Blogger. Mostrar en entradas sólo ciertas etiquetas", ya que redundaría.

      Eliminar
    3. OK... no excluir una etiqueta como entendí al principio, sino no recomendar el mismo posts que se está leyendo. Pues eso creo que el código que está en ese mismo enlace que citas lo hace ¿lo estás usando o es otro código?

      Eliminar
    4. Sí, en este post se puede ver que ya instalé el gadget de entradas relacionadas RWD, sólo modifiqué un poco el estilo → https://bugs-and-others.blogspot.mx/2016/06/colaboracion-entre-insectos-y-un-artista.html

      Como se aprecia en este caso, en los relacionados figuran 2 entradas; una diferente ("Insectos podrían tener la clave para la reparación del tejido humano") y la otra es la misma en la que se encuentra. Eso ocurre en todas las entradas. ¿Cómo hacer para que no se repita?

      Se me ocurre alguna condición de exclusión del URL actual o algo así. Espero su respuesta maestro, un cordial saludo.

      Eliminar
    5. Pues yo creo que lo que ocurre es que de caddisfly, seda y Trichoptera sólo tienes dos posts y por eso te saca el otro y el propio. Posiblemente cuando tengas un tercero y un cuarto con esas etiquetas, ya no te saldrá.

      Eliminar
    6. Muy bien, le daré seguimiento y cuando cuente con más entradas le hago saber si se solucionó. Muchas gracias.

      Eliminar