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.homepageUrl ► Dirección de la página Inicio
Ejemplo: http://www.oloblogger.com - data:blog.pageType ► Tipo de página Puede tener los siguientes valores:
- index → Home, páginas de etiquetas y recientes/antiguas
Ejemplo: http://www.oloblogger.com/search/label/BPT - archive → Navegación a través del gadget Archivo
Ejemplo: http://www.oloblogger.com/search?updated-min=2011-01-01T00... - static_page → Página estática
Ejemplo: http://www.oloblogger.com/p/contacto.html - item → Una 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>
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 == "17/02/2010"'>
Ejecuta lo que hay aquí si la fecha del post es igual a 17/02/2010.
</b:if>
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 " 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>
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>
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 == "http://www.oloblogger.com/2010/02/codificacion-facil.html"'>
Ejecuta lo que hay aquí únicamente cuando la dirección de la página coincide con la expresada a la derecha.
</b:if>
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 == "item"'>
Ejecuta lo que hay aquí únicamente cuando la dirección de la página coincide con la de una entrada.
</b:if>
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 == "archive"'>
Ejecuta lo que hay aquí si hemos accedido al sistema de navegación desde el Archivo.
</b:if>
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 != "static_page"'>
Ejecuta lo que hay aquí siempre que NO estemos en una página estática.
</b:if>
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 == "index"'>
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>
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.
Oloman: me eh revuelto mas de lo que estaba, creo que asi dejare mi intro :)
ResponderEliminarYa 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.
EliminarEs que soy cabeza Hueca y no se que condicional Usar, Osea me confunden...
EliminarAyuda!
Intente con la Ultima condicional y NO ME FUNCIONO :(
EliminarRefréscame la memoria ¿qué era lo que querías hacer?
EliminarHola Oloman:
ResponderEliminarY si quisiera que se vea en todas partes menos en las etiquetas???
Gracias.
Si incluimos que no se vea tampoco en páginas de navegación recientes/antiguas, sería así:
ResponderEliminar<b:if cond='data:blog.pageType == "index"'>
<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>
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.
ResponderEliminarte dejo mi blog por si quieres ver el problema: http://melejsoft.blogspot.com
El último no. El que tienes que usar sí quieres que se vea en todas partes menos en entradas, sería:
Eliminarb: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"
estos codigos no funcionan en los gatgets?
ResponderEliminarNo. Sólo en la plantilla.
EliminarSin embargo sí que puedes localizar el código del gadget en la plantilla y ahí ponerles la condición que quieras.
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....
ResponderEliminarCon 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
EliminarEn 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.
Oloman
ResponderEliminarquisiera saber si es posible convertir una pagina estatica en una pagina post donde puede incluir entradas
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.
EliminarSi 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.
Muy buen articulo. De gran ayuda
ResponderEliminarSeguro 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.
ResponderEliminarHola oloman quisiera mostrar un script tanto en pagetype=index como en archive.
ResponderEliminarO sea, en todo menos en entradas (item) y páginas estáticas (static_page). Pues ya te contesté :)
ResponderEliminarLa condición sería
<b:if cond='data:blog.pageType != "item"'>
<b:if cond='data:blog.pageType != "static_page"'>
LO QUE SE TIENE QUE EJECUTAR
</b:if>
</b:if>
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
ResponderEliminarHola 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.
EliminarNo 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.
Mil y Mil gracias por toda tu ayuda. lo voy a dejar así.
EliminarHola, 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.
ResponderEliminarEl 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!
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á.
EliminarLas 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.
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!
ResponderEliminarSe puede hacer para una página estática en concreto? ej. /p/home.html
ResponderEliminarSaludos
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.
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarse puede personalizar con esto la forma en que aparecen las entradas al buscar?
ResponderEliminarHola:
ResponderEliminarPor alguna extraña razón en este widget de etiquetas cuando intento condicionar que se vea o no el contenido al valor de la etiqueta data:blog.url me funciona bien si la comparo con otra etiqueta data pero si la comparo con una url concreta no funciona. He probado incluso a poner la condicion en mitad del codigo del widget pero entonces ni siquiera se ve lo que hay antes de la condición...es muy raro, ¿alguna idea?
FREQUENCY
LIST
ALL
true
..... Aqui va el codigo del widget ....
Muchas gracias