Quitar sidebar en páginas de artículos de blogs de Blogger
Hace poco me hicieron una pregunta sobre este tema, así que voy a hacer un post rápido sobre el mismo. En realidad, conseguir que en las páginas de cada entrada o artículo se muestre una estructura diferente a la que aparece en la portada no es demasiado difícil. La clave está en el uso de condicionales, tema fundamental para el caso de Blogger, y del que ya hemos hablado en otras ocasiones. Vamos a analizarlo y os doy los códigos necesarios.
Bien, antes de nada justificaremos este post. ¿Por qué habríamos de personalizar así nuestro blog? Razones estéticas aparte, considero que puede ser de utilidad para el SEO, pues estamos eliminando posible ruido en las páginas de cada artículo. Es decir, si dentro de los artículos sólo tenemos eso, el propio artículo y nada más, estamos ayudando al buscador en la correcta indexación del contenido, lo que afecta y ayuda sin duda al posicionamiento.
Tras la justificación empiezo con la explicación. Para empezar os pongo un ejemplo. En este blog lo he aplicado. Como podréis ver si lo visitáis tiene una estructura de 3 columnas, mientras que al entrar en cada artículo ya sólo aparecen dos. La columna o sidebar de la izquierda ha desaparecido dentro de cada artículo.
En el "interior" ya sólo hay una columna lateral. La otra, que contenía las categorías del blog, se ha quitado. En lo que se refiere al SEO considero que es mejor pues las categorías generales son algo que concierne a la portada del blog, al blog en su conjunto diríamos, y no al artículo en sí, que puede no tener nada que ver con algunas categorías generales. Mantenerlas todas es, en cierto modo, añadir ruido para el buscador.
Entonces, ¿cómo quitar dicha columna? Esto se hace usando condicionales en el código en función al tipo de página. Así pues habremos de modificar la plantilla para conseguirlo.
- Importante: Como siempre, mucho cuidado cuando modifiquéis el código de la plantilla. Lo mejor será descargar primero una copia por seguridad, sobre todo si somos poco expertos.
Antes de nada os recuerdo que Blogger tiene distintos tipos de página: "Item" son las de los artículos, mientras que "Index" son las de la portada y siguientes, así como también las páginas de categorías. "Archive" correspondería a los archivos... y así. Visitad este link para obtener toda la información sobre el tema (este aspecto es fundamental).
De esta forma, lo que hemos de hacer es poner un contenido en un tipo de página y otro diferente en el resto. Aquí es donde entran en juego los condicionales.
En el artículo del link anterior ya puse bastante información sobre esto, pero como era relativa a la indexación en los buscadores (un tema completamente distinto) será mejor que vuelva a repetirlo aquí, con más claridad. En cualquier caso recomiendo fuertemente leer también el post mencionado.
Uso de condicionales para páginas de artículos en Blogger.
Brevemente, habremos de usar <b:if>
. Todo lo que pongamos dentro de la etiqueta se aplicará sólo si se cumple la condición. La forma de expresar estas condiciones según el tipo de página en el código de Blogger es la siguiente:</b:if>
<b:if cond='data:blog.pageType == "item"'>
AQUÍ EL CÓDIGO ESPECIAL PARA LAS PÁGINAS DE ARTÍCULOS
</b:if>
Como podéis ver, además de IF también hay otro elemento, que son los dos signos de igual ==. Se usan para decir que la primera parte es igual a la segunda, lógicamente. Es decir, en el ejemplo anterior, estamos diciendo que "si el tipo de página es item", entonces... aplicar lo de dentro. Si no, pues no se hará nada.
- Nota: también podemos decir lo contrario usando !=, es decir, "si el tipo de página NO es item, entonces...". En este caso se aplicaría la condición no a las páginas de artículos, sino a todas las demás. Es también algo muy útil.
Añadir un estilo para que no se muestren elementos en función del tipo de página.
Bien, ya tenemos localizado el tipo de página, ahora lo que hay que decirle a Blogger es que, en dicho tipo de páginas, las de los artículos, no muestre el sidebar izquierdo. Esto lo haremos mediante CSS, concretamente con la propiedad display:none (no desplegar).
Realmente, lo complicado será localizar el elemento HTML al que aplicarle el estilo CSS para que no se muestre. Hay diversas formas de localizarlo, la más sencilla será tal vez usar las herramientas propias de los navegadores (Firefox, Chrome, etc...). Bastará con hacer clic derecho sobre el sidebar, y elegir "inspeccionar elemento". Después, nos moveremos por las etiquetas hasta encontrar la superior, la que englobe todo el sidebar o columna.
Como puede verse, en mi plantilla el sidebar izquierdo esta dentro de un DIV con una clase denominada "column-left-outer". Pues bien, será este div el que habremos de establecer que no se despliegue mediante CSS.
De esta forma, dentro de <head>, junto al resto de los estilos, añadiremos nuestro condicional especial:
<!-- condicional para quitar sidebar izquierdo en las páginas de artículos -->
<b:if cond='data:blog.pageType == "item"'>
<style type='text/css'>
.column-left-outer div {display:none}
</style>
</b:if>
Y ya está, con esto le habremos dicho a Blogger que en las páginas de artículos no se despliegue el div de la columna izquierda. Eso sí, nos quedará un espacio en blanco, de forma que el trabajo no estaría terminado. En mi caso he aplicado muchos otros condicionales, para ensanchar el contenedor de los post y centrarlo todo en dichas páginas. Ya será cosa de cada uno dicha personalización.
Otro método para quitar el sidebar (sin usar CSS, sólo con condicionales).
Existe otro método bastante sencillo que no requiere CSS. Basta con buscar en la plantilla el contenedor de la columna izquierda (que como hemos visto es un div de clase .column-left-outer), y meterlo entero dentro de un condicional.
Aquí estaríamos dentro de <BODY>. Buscamos directamente el código de esa columna, y le aplicamos el condicional para que sólo aparezca esa parte del código si estamos en una página tipo index (las de la portada y similares):
<!-- condicional para sidebar izquierdo solo en portada -->
<b:if cond='data:blog.pageType == "index"'>
<div class='column-left-outer'>
<div class='column-left-inner'>
...
</div>
</div>
</b:if>
Es decir, este método consiste en poner toda esa parte de la plantilla (column-left) en un condicional, para que aparezca únicamente en el tipo de páginas que le digamos. Si no estamos en dicho tipo de página no aplicará lo de dentro, con lo que no existirá allí dicho sidebar.
Seguramente es un método más agresivo que el basado en CSS. Yo recomendaría tal vez usar el primer método.
Otros usos similares de los condicionales y CSS para ocultar cosas en determinados tipos de página.
La imaginación es el límite. Como habéis visto, las posibilidades de personalización de Blogger son muy grandes, casi ilimitadas, si se sabe programarlo. Y no es demasiado difícil dicha programación.
Bastará con identificar el elemento que queramos que no aparezca, y aplicar dentro de <HEAD> el condicional y el estilo CSS. Por ejemplo:
<!-- condicional para quitar fecha en portada, paginacion y categorias -->
<b:if cond='data:blog.pageType == "index"'>
<style type='text/css'>
.date-header span {
display: none;
}
</style>
</b:if>
Aquí lo que hemos hecho es no mostrar la fecha en las páginas tipo Index. En los artículos, archivos, etc... sí que aparecerá.
Y como esto pues todo. Cada tipo de página puede ser personalizada enteramente, e incluso páginas concretas (una URL de nuestro sitio) también.
-
"Interesante"
-
Hola, muy útil este artículo. Aprovecho para pedirte una pequeña ayuda: quiero cambiar el ancho de para llenar el espacio en blanco y en ese sentido tendría que aplicar el siguiente condicional?
< b:if cond='data:blog.pageType == "item"'>
< style type='text/css'>
.post-body div {width:900px;}< /style>
Te agradezco todo la ayuda que me puedas brindar!! Saludos.
-
Hola Mrjudos, en efecto ese sería el condicional, pero te faltaría cerrar la etiqueta IF
Después no sé si en tu blog el div contenedor que quieres ampliar se llama de esa forma, pero en principio tiene buena pinta.
Prueba y si no funciona pon aquí la URL de tu página y lo miro.
-
Por cierto, para cerrar la etiqueta IF en realidad me refiero a la etiqueta B. Para no liarnos, a esto:
</b:if>
-
Hola, Muchas gracias por tu entrada, me ha servido muchismo y está muy bien explicado.
Saludos!
-
Gracias Matías, un saludo
-
He mirado y remirado en varios sitios y tan sólo me funciona con tu método, pero no sé qué he añadir al CSS para que los posts queden centrados y desapareza, por tanto, ese espacio en blanco tan feo. ¿Podrías indicármelo?
Un saludo.
P.D.: he probado con float y align entre otros. -
Hola Rebeca, tienes que buscar el contenedor principal de los artículos (parte central). En mi caso es el DIV id="main". Seguramente en tu blog será igual. Primero debes mover todo ese bloque a la izquierda, lo que puedes hacer aplicándole margin-left negativo. Por ejemplo, si la columna que has quitado tenía 150 píxeles de ancho, pues aplica -150px {#main margin-left: -150px}. Esto lo desplazará a la izquierda.
Luego deberás ampliar el ancho de los artículos para cubrir el espacio en blanco. Esto lo puedes hacer sencillamente añadiendo un width mayor a #main (en mi caso añadí width:600px).
Estos estilos CSS deberán estar dentro del condicional para que solo lo aplique en las páginas de artículos, naturalmente, tal y como se explica en el post.
Suerte! Recuerda guardar primero tu plantilla por si acaso. Es complicado esto, son cambios un poco bruscos. Y es posible que en tu plantilla los contenedores se llamen de otra forma. Pero la mecánica es esa: quito la columna, desplazo la parte central y finalmente el amplio el ancho para cubrir el espacio vacío.
-
Te pongo lo que tengo yo:
#main {
width: 600px;
margin-left: -150px;
} -
Otra cosa, seguramente habrá que hacer retoques finales, pues los contenedores suelen tener márgenes (padding y/o margin). Así pues probablemente al desplazarlos te quedarán huecos. Para hacer estos ajustes finos tendrás que localizar los diferentes contenedores y sus márgenes, para en su caso modificarlos en las páginas de artículos.
Te puede interesar...