Selector binario y ternario en Blogger

min

Los selectores ternarios y binarios en Blogger nos permiten usar condiciones en situaciones donde b:if o b:else no son prácticas. También resultan especialmente útiles para evitar repetir codigo o reducirlo.


Selector Binario

Nos permite crear una condición donde se comprueba la primera expresión y procede a mostrarla, si la expresión no devuelve ningún valor (vacío) procederá a mostrar el segundo. Su sintaxis es la siguiente:


[expresion] ?: [expresion]

En el siguiente ejemplo comprobamos si el título del blog existe. De no existir (vacío) procede a mostrar el mensaje "No hay títulos en esta página":


<b:eval expr='data:blog.pageName ?: "No hay títulos en esta página"'/>

En el siguiente ejemplo comprobamos si se ingresaron terminos de busqueda. De no existir (vacío) procede a mostrar el segundo valor:


<b:eval expr='data:view.search.query ?: "No ingresaste ningún término"'/>

Selector Ternario

Nos permite crear una condición con dos posibles estados. Si la condición es verdadero se mostrará un valor, caso contrario se muestra otro, similar a <b:if> y <b:else>. Su sintaxis es la siguiente:


[Condición] ? [Si es Verdadero] : [Si es Falso]

En el siguiente ejemplo comprobamos si nos encontramos en una página de error, si la condición es verdadera la etiqueta <b:class/> agregara la clase "is-error" al body, caso contrario agrega la clase "main-content":


<body>
   <b:class expr:name='data:view.isError ? "is-error" : "main-content"'/>
   <!-- Contenido -->
</body>

En este otro ejemplo comprobamos si el blog contiene material para adultos, si la condición es verdadera se muestra el texto "contenido no apto", caso contrario se muestra el segundo valor, el resultado lo almacenará en una variable:


<b:with value='data:blog.adultContent ? "Contenido no apto" : "Apto"' var='mature'>
   <b:eval expr='data:mature'/>
</b:with>

En este ultimo ejemplo comprobamos si los comentarios están permitidos, para mostrar una clase según la situación.


<div expr:class='data:post.allowComments ? "permitido" : "no-permitidos"'>
   <!-- Comentarios -->
</div>

Si tienes alguna pregunta no dudes en dejarla en los comentarios. Si te ha servido esta entrada no olvides compartirla, eso me ayudaria mucho.