miércoles, 6 de noviembre de 2013

Mostrar entradas por etiquetas

Esto puede ser útil para filtrar algunas entradas y/u organizar nuestra página de inicio, o bien para lo que desees. También puedes hacer algo "a la inversa", es decir, mostrar las entradas con la etiqueta X y ocultar el resto.

blogger, etiquetas, pagina inicio, homepage

El tutorial:

Para comprobar la funcionalidad del tutorial, he creado un demo en el cual se ocultan todas las entradas etiquetadas como Blogger, las demás se muestran en el índice y en las categorías normalmente.

Opción 1: Ocultar entradas con determinada etiqueta:
Con los artilugios expandidos, en nuestro editor HTML buscaremos el siguiente código (Búscalo por su inicio y su cierre):

1
2
3
4
5
<b:includable id='post' var='post'>
<!-- Acá va una gran cantidad de código el cual no tocaremos -->
</b:includable>

Cuando hayas encontrado este código, incluye el código siguiente de esta manera:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<b:includable id='post' var='post'>
<!-- Inicio del código-->
<b:loop values='data:post.labels' var='label'>
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<b:if cond='data:label.name == &quot;Nombre de la etiqueta&quot;'>
<b:else/>
<!-- Acá va el código que iba dentro del <b:includable> -->
</b:if>
<b:else/>
<!-- Acá va el código que iba dentro del <b:includable>, otra vez -->
</b:if>
</b:loop>
<!-- Fin del código -->
</b:includable>

En donde aparece "Nombre de la etiqueta" escribe exactamente el nombre de cual quieras excluir en el inicio del blog, una vez hecho esto previsualiza los cambios, y si consigues observar el resultado puedes guardar tu plantilla.

Importante: Para que todo siga funcionando correctamente dentro de tu blog, es necesario que el código que estaba dentro del <b:includable> lo agregues también en el espacio que he marcado.

Opción 2: Mostrar únicamente entradas con determinada etiqueta:

Para invertir la operación, bastaría con buscar la segunda condicional dentro del código (La que se encuentra dentro del <b:loop>:
1
<b:if cond='data:label.name == "Nombre de la etiqueta"'>

Y en donde aparece == deberás dejarlo como !=, quedando de la siguiente manera:
1
<b:if cond='data:label.name != "Nombre de la etiqueta"'>

Guardas los cambios y listo.

Opción 3: Ocultar y hacer coincidir la última etiqueta:

He actualizado esta entrada con el código para hacer coincidir la última etiqueta de los posts y así ocultarlos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<b:includable id='post' var='post'>
<!-- Inicio del código-->
<b:loop values='data:post.labels' var='label'>
    <b:if cond='data:blog.url == data:blog.homepageUrl'>
        <b:if cond='data:label.isLast == &quot;true&quot;'>
            <b:if cond='data:label.name == &quot;Nombre de la etiqueta&quot;'>
            <b:else/>
                <!-- Acá va el código que iba dentro del <b:includable> -->
            </b:if>
        </b:if>
    <b:else/>
        <!-- Acá va el código que iba dentro del <b:includable>, otra vez -->
    </b:if>
</b:loop>
<!-- Fin del código -->
</b:includable>

El procedimiento para invertir la función es el mismo que el del método 2.