Guía: Condiciones Blogger según tipo de página. Simples | Oloblogger Este es un recordatorio-guía sobre las distintas condiciones que podemos manejar en Blogger y que nos sirven para mostrar o ejecutar cierta...

31 de enero de 2012

Guía: Condiciones Blogger según tipo de página. Simples

Este es un recordatorio-guía sobre las distintas condiciones que podemos manejar en Blogger y que nos sirven para mostrar o ejecutar ciertas cosas, justo en el tipo de página que queremos y no en otras.

Anteriormente ya vimos una pequeña explicación sobre qué era esto de las condiciones y sobre cómo usarlas, pero como desde entonces ha llovido mucho, observo que es una pregunta habitual y sobre todo, entonces fui algo más desordenado, pues allá vamos.

Las páginas Blogger (esto no se aplica en otras plataformas) también manejan las direcciones de las páginas y sus distintos tipos con etiquetas data. Este sería el catálogo:

  • data:blog.homepageUrlDirección de la página Inicio
    Ejemplo: http://www.oloblogger.com
  • data:blog.pageTypeTipo de página
  • Puede tener los siguientes valores:
    • indexHome, páginas de etiquetas y recientes/antiguas
      Ejemplo: http://www.oloblogger.com/search/label/BPT
    • archiveNavegación a través del gadget Archivo
      Ejemplo: http://www.oloblogger.com/search?updated-min=2011-01-01T00...
    • static_pagePágina estática
      Ejemplo: http://www.oloblogger.com/p/contacto.html
    • itemUna entrada individual
      Ejemplo: http://www.oloblogger.com/2010/02/otra-pantalla-de-presentacion-facil.html

Otra variable que nos va a hacer falta para montar las condiciones es data:post.url, que nos remite a la dirección de la página dónde estamos actualmente.


Bien, ya tenemos todo lo necesario para empezar a condicionar cosas. Lo importante es entender la estructura porque a medida que avancemos la cosa se complica. Blogger no permite poner cosas del tipo "Si es este tipo de página y no este", ni ninguna otra combinación tipo AND/OR, así que hay que ir usando nuestra propia lógica para anidara las condiciones.

Una condición básica sería de la forma:

<b:if cond='data:post.dateHeader'>
Ejecuta lo que hay entre los dos if si la fecha del post existe
</b:if>


Pero para lo que nos ocupa -discriminar el tipo de página- necesitaremos hacer una comparación para ver si se cumple la igualdad y no sólo comprobar si un valor existe o no:

<b:if cond='data:post.dateHeader == &quot;17/02/2010&quot;'>
Ejecuta lo que hay aquí si la fecha del post es igual a 17/02/2010.
</b:if>


Hay dos tipos de operadores para comparar, == cuyo significado es evidente y !=, que quiere decir "no es igual". Por causa de que Blogger nos exige una redacción de código muy estricta, los valores a comparar y el operador deben ir entre comillas simples (') y si uno de los dos valores no es una etiqueta data sino una cadena de caracteres normal (caso de una fecha, caso de una dirección), ese valor literal debe ser escrito entre &quot; en sustitución de lo que normalmente serían comillas dobles.


Con todo esto ya podemos discriminar las cosas que sí queremos que se vean sólo en el Home y no en otras páginas:

<b:if cond='data:blog.url == data:blog.homepageUrl'>
Ejecuta lo que hay aquí si la dirección de la página en la que estamos coincide con la dirección pricipal del blog.
</b:if>


Por el contrario si queremos que algo se ejecute en todos los tipos de página excepto en la de inicio, tendríamos que usar !=:

<b:if cond='data:blog.url != data:blog.homepageUrl'>
Ejecuta lo que hay aquí sólo cuando la dirección de la página en la que estamos NO es la dirección pricipal del blog.
</b:if>


A partir de aquí obviaré que todas las expresiones con == tienen su contraria con != para no ser demasiado exhaustivo.


Para distinguir una entrada en concreto usaríamos este mismo tipo de expresión:

<b:if cond='data:blog.url == &quot;http://www.oloblogger.com/2010/02/codificacion-facil.html&quot;'>
Ejecuta lo que hay aquí únicamente cuando la dirección de la página coincide con la expresada a la derecha.
</b:if>


Seguimos con los casos fáciles. Ver algo sólo cuando estamos en una entrada individual cualquiera.

<b:if cond='data:blog.pageType == &quot;item&quot;'>
Ejecuta lo que hay aquí únicamente cuando la dirección de la página coincide con la de una entrada.
</b:if>


Ver algo sólo cuando estamos en una página correspondiente a un elemento del gadget Archivo.

<b:if cond='data:blog.pageType == &quot;archive&quot;'>
Ejecuta lo que hay aquí si hemos accedido al sistema de navegación desde el Archivo.
</b:if>


Con las páginas estáticas lo más habitual es que queramos ocultar algo, así que en este caso el ejemplo va en negativo, aunque obviamente podría hacerse a la inversa.

<b:if cond='data:blog.pageType != &quot;static_page&quot;'>
Ejecuta lo que hay aquí siempre que NO estemos en una página estática.
</b:if>


Ver algo en Inicio, páginas de etiquetas y páginas recientes/antiguas. Recordamos que estas tres se agrupan en el tipo Index.

<b:if cond='data:blog.pageType == &quot;index&quot;'>
Ejecuta lo que hay aquí cuando la dirección de la página corresponde al Home o a una página de navegación.
</b:if>

Ver también:
Guía: Condiciones Blogger según tipo de página. Combinadas

¿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

28 comentarios :

  1. Oloman: me eh revuelto mas de lo que estaba, creo que asi dejare mi intro :)

    ResponderEliminar
    Respuestas
    1. Ya veo que entendiste quién provocó que hiciera esta entrada ;) Lo que yo no entiendo es que al menos no lo intentes en algún sitio de prueba.

      Eliminar
    2. Es que soy cabeza Hueca y no se que condicional Usar, Osea me confunden...

      Ayuda!

      Eliminar
    3. Intente con la Ultima condicional y NO ME FUNCIONO :(

      Eliminar
    4. Refréscame la memoria ¿qué era lo que querías hacer?

      Eliminar
  2. Hola Oloman:
    Y si quisiera que se vea en todas partes menos en las etiquetas???
    Gracias.

    ResponderEliminar
  3. Si incluimos que no se vea tampoco en páginas de navegación recientes/antiguas, sería así:
    <b:if cond='data:blog.pageType == &quot;index&quot;'>
    <b:if cond='data:blog.url == data:blog.homepageUrl'>
    Se ejecuta sólo en Home
    <b:else/>
    Se ejecuta sólo en Etiquetas/Recientes/Antiguas (dejar en blanco)
    </b:if>
    <b:else/>
    Se ejecuta en el resto de páginas
    </b:if>

    ResponderEliminar
  4. Oloman: Estoy queriendo usar el ultimo condicional para mostrar un gadget con un codigo de adsense,quiero que se vea en todos lados menos cuando estas dentro de una entrada ya que cuando me meto en una entrada tengo 4 bloques de adsense y el de la sidebar desaparece.
    te dejo mi blog por si quieres ver el problema: http://melejsoft.blogspot.com

    ResponderEliminar
    Respuestas
    1. El último no. El que tienes que usar sí quieres que se vea en todas partes menos en entradas, sería:
      b:if cond='data:blog.pageType != "item"'

      La traducción sería algo así cómo "Si no estamos en una página tipo item..." O lo que es lo mismo "Si no estamos en una entrada"

      Eliminar
  5. estos codigos no funcionan en los gatgets?

    ResponderEliminar
    Respuestas
    1. No. Sólo en la plantilla.

      Sin embargo sí que puedes localizar el código del gadget en la plantilla y ahí ponerles la condición que quieras.

      Eliminar
  6. Hola, quisiera saber si hay una maner de comparar parte de la url, osea por ejemplo: si una url es igual a la parte inicial de otra url, espero me puedas ayudar, saludos....

    ResponderEliminar
    Respuestas
    1. Con condiciones de este tipo no, pero si es para detectar algún tipo de direcciones para añadirles determinado estilo, puedes utilizar selectores de atributos

      En este otro post hay un ejemplo de uso más desarrollado.

      Y si ya quieres otra cosa pues supongo que habría que recurrir a JavaScript.

      Eliminar
  7. Oloman

    quisiera saber si es posible convertir una pagina estatica en una pagina post donde puede incluir entradas

    ResponderEliminar
    Respuestas
    1. Son cosas distintas. Una página estática se usa para información "fija", atemporal, de interés siempre: formulario de contacto, sobre el autor, etc. Una entrada es cualquier contenido que se va publicando en el blog y que se verá desplazado por cada nueva publicación, de manera que lo más actual es siempre lo primero que se ve.

      Si a lo que te refieres es a que quieres pasar una página estática a una entrada (o post), entonces simplemente la editas, copias su contenido y publicas una nueva entrada pegando allí lo que estaba en la página estática. Luego borras la página.

      Eliminar
  8. Muy buen articulo. De gran ayuda

    ResponderEliminar
  9. hola oloman quisiera saber si se puede mostrar o ejecutar un elemento en todas las entradas de una etiqueta especifica??

    ResponderEliminar
    Respuestas
    1. Seguro que sí, aunque lo único que tengo publicado al respecto es algo antiguo y quizás alguien haya publicado recientemente algo mejor. Es un código para añadir iconos a un post según su etiqueta, pero de manera similar puedes añadir cualquier otro elemento... u ocultarlo.

      Eliminar
  10. Hola oloman quisiera mostrar un script tanto en pagetype=index como en archive.

    ResponderEliminar
  11. O sea, en todo menos en entradas (item) y páginas estáticas (static_page). Pues ya te contesté :)

    La condición sería
    <b:if cond='data:blog.pageType != &quot;item&quot;'>
    <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
    LO QUE SE TIENE QUE EJECUTAR
    </b:if>
    </b:if>

    ResponderEliminar
  12. Hola, ante todo darte las gracias, porque sin saber nada tecnico, solo con ganas de hacer un blog, tu has sido mi maestro. tengo una pagina estatica cuya url me aparece con un numero y quiero eliminarlo. (www.miblog.blogspot.com/p/algo_17.html) como le quito el numero?. muchas gracias

    ResponderEliminar
    Respuestas
    1. Hola Angela. Quitarlo, lo que es quitarlo no puedes. Tendrías que crear una nueva página con el nombre que quieres y sustituir el enlace que tengas a www.miblog.blogspot.com/p/algo_17.html por la dirección nueva.

      No obstante a veces no se puede porque Blogger es así de puñetero y si ese nombre ya lo usaste y luego lo borraste, en ocasiones ya no se puede volver a usar.

      Eliminar
    2. Mil y Mil gracias por toda tu ayuda. lo voy a dejar así.

      Eliminar
  13. Hola, me he visto las dos guías sobre los condicionales que has subido y estoy enquistado en lo que me creo que es lo más básico.. jajaja porque lo que es la programación la entiendo perfectamente gracias a tu trabajo, y a lo poco que dí en el instituto.

    El caso es que no sé dónde poner los b:if ... y demás. Los pongo antes de head y después del script que quiero que sea afectado, pero nada. El script es el "slider mas simple del mundo", que quiero que salga solo en la página principal, el index. Pero me parece que lo que lo jode todo un poco es el .css porque consigo que salga solo, pero no con las imágenes, y mal posicionado. Un saludo!

    un saludo!

    ResponderEliminar
    Respuestas
    1. Hola Dani. Las condiciones IF de Blogger sólo funcionan en la plantilla. Probablemente tengas el código del slider en un gadget y si pones allí esa condición, no funcionará.

      Las alternativas son dos:
      - poner el código del slider directamente en la plantilla (en el lugar adecuado) y allí condicionas
      - lo dejas dónde está y la condición la pones en plantilla y dentro de ella CSS con la etiqueta STYLE en el que ocultes con display:none; el gadget en concreto dónde está tu slider.

      Eliminar
  14. Ok solucionado, lo tenía todo en la plantilla pero se ve que puse algo mal en el código y me desbarató el slider entero. Muchas gracias!

    ResponderEliminar
  15. Se puede hacer para una página estática en concreto? ej. /p/home.html
    Saludos

    ResponderEliminar
    Respuestas
    1. Sí claro, Miguel. Sería lo mismo que indico en "Para distinguir una entrada en concreto...", pues al tratarse de una URL no se distinguen entre entradas y páginas.

      Eliminar