La diferencia entre ocultar algo con CSS o JavaScript y usar estos condicionales es sustancial. Si bien, a simple vista parece lo mismo, no lo es en absoluto. Cuando ocultamos con CSS usando propiedades como display:none; sólo hacemos invisible cierta parte pero, el código y su contenido, serán ejecutados igual; como resultado, el tiempo de carga del sitio no variará ya que la cantidad de datos que debe leer el navegador es la misma. Lo comprobamos con facilidad; si miramos el código fuente, eso que ocultamos se verá.
Por el contrario, los condicionales no son ejecutados por el navegador sino por el mismo Blogger, es decir, se ejecutan ANTES que la página sea enviada al navegador; Blogger "escribe" el código fuente y omite esa parte condicionada. Como resultado, si miramos el código fuente, no la veremos; de ese modo, aún cuando nuestra plantilla sea muy grande, la carga del sitio será más rápida por la simple razón de que hay sectores que son ignoradas.
item son las páginas individuales:
http://miblog.blogspot.com/2010/04/titulo.html
archive son las páginas que se ven cuando navegamos usando el elemento Archivos:
http://miblog.blogspot.com/2010_04_01_archive.html
static_page son las páginas estáticas:
http://miblog.blogspot.com/p/titulo.html
index son todas las demás, el home, cuando navegamos entradas antiguas o las etiquetas:
http://miblog.blogspot.com/search/
http://miblog.blogspot.com/search/label/nombreetiqueta
http://miblog.blogspot.com/search?updated-max=2010-01-11T11.......&max-results=2
Todas ellas son accesibles si leemos este dato:
<data:blog.pageType/>
Así que podemos crear cualquiera de estas condiciones de este modo:
<b:if cond='data:blog.pageType == "item"'>
... esto sólo se verá en las páginas individuales ...
</b:if>
<b:if cond='data:blog.pageType != "item"'>
... esto se verá en todas las páginas excepto en las páginas individuales
</b:if>
<b:if cond='data:blog.homepageUrl == data:blog.url'>
... esto se verá en el home ...
</b:if>
<b:if cond='data:blog.pageType == "index"'>
<!-- OK es una página de tipo index -->
<b:if cond='data:blog.homepageUrl == data:blog.url'>
<!-- y es el home -->
... así que acá muestro algo ...
<b:else/>
<!-- como no es el home -->
... acá muestro otra cosa ...
</b:if>
</b:if>
Una condición más nos permite saber si estamos en una entrada específica; basta saber la URL de esa entrada:
<b:if cond='data:blog.url == "http://miblog.blogspot.com/2010/04/titulo.html"'>
... esto sólo se verá en este post y nada más que en este post ...
</b:if>
<b:widget id='XXXX' locked='false' title='' type='XXXX'>
<b:includable id='main'>
<b:if cond='data:blog.pageType == "item"'>
... cualquier tipo de código que coloque el widget ...
</b:if>
</b:includable>
</b:widget>
En este blog de pruebas puede navegarse y se mostrarán distintos elementos en la sidebar y debajo del header, según sea el tipo de página en la que estamos:
1 comentarios:
Estoy utilizando los condicionales en mi blog (de Google), para evitar la aparición de la sidebar en algunas entradas, pero cuando utilizo mas de ocho condicionales en mi código, justo antes de < / head > , me da error XML y no me deja guardar la plantilla ¿Sabes a que es debido esto? ¿Es alguna limitación impuesta por blogger?
Publicar un comentario