Ahora me ves, ahora no me ves

Última respuesta genérica de la semana complice

¿Es posible personalizar la sidebar para que ciertos elementos no se muestren cuando estamos en las páginas de posts individuales y si lo hagan en la página principal? ¿Puede ocultarse? ¿Pueden tenerse dos sidebars distintas, una vertical para la página principal y otra horizontal para las páginas individuales?


La respuesta genérica es SI ... pero confuso

En todos los casos, lo más sencillo es utilizar los códigos condicionales de Blogger. Por ejemplo, si queremos que la sidebar se muestre distinta en las página individuales, justo antes de </head>, agregamos lo siguiente:
<b:if cond='data:blog.pageType == "item"'>
<style type='text/css'>
... aquí colocamos las propiedades ...
</style>
</b:if>
Es decir, tenemos dos grupos de propiedades, las normales están en <b:skin> </b:skin> que son las que se utilizan por defecto y las nuevas las colocamos dentro de un condicional que sobrescribe, agrega o cambia las primeras.

Lo mismo podemos hacer para que cieros elementos se muestren o se oculten pero, para eso, debemos buscar en la plantilla el ID de cada uno. Sin expandir, podríamos ver algo así:
<b:section class='sidebar' id='sidebar' preferred='yes'>
<b:widget id='HTML1' locked='false' title='elemento1' type='HTML'/>
<b:widget id='Feed1' locked='false' title='elemento2' type='Feed'/>
<b:widget id='HTML2' locked='false' title='elemento5' type='HTML'/>
<b:widget id='Label1' locked='false' title='elemento3' type='Label'/>>
<b:widget id='BlogArchive1' locked='false' title='elemento4' type='BlogArchive'/>
</b:section>
¿Queremos que en la página principal se vean sólo cuatro y el quinto permanezca oculto? Pués entonces, dentro de <b:skin> </b:skin> debemos indicarle que se oculte con:

#HTML2 {display:none;}

¿Queremos que en la página de posts se oculten los elementos 2 y 4? Entonces, antes de </head> ponemos:
<b:if cond='data:blog.pageType == "item"'>
<style type='text/css'>
#Feed1 {display:none;} /* ocultamos el elemento 2 */
#BlogArchive1 {display:none;} /* ocultamos el elemento 4 */
#HTML2 {display:block;} /* mostramos el elemento 5 */
</style>
</b:if>
Resumiendo, haciendo uso de los condicionales, determinamos qué elementos se muestran y cuales se ocultan. Pero claro, todo lo demás dependerá de cada plantilla y habrá miles de posibles combinaciones.

11 comentarios:

Azul

Hola!

Mi pregunta no tiene nada que ver con el post que publicas hoy(eso si, me esta gustando porque me va a servir para algo específico de mi blog) sino, algo más sencillo, o eso espero.

Cómo puedo hacer que el enlace para los comentarios en mi blog, aparezcan al final de cada post, como en el tuyo y la mayoría de los blogs. En el mío aparece junto a la fecha de publicación y título y honestamente no me gusta, ya he toqueteado la plantilla, pero no encuentro como ponerlos al final de cada post.

Espero que puedas ayudarme....te dejo mi correo, por si tienes tiempo me orientes.

Gracias!!

ventana.azul@gmail.com

JMiur

Te he enviado un mail con una explicación a ver si te resulta útil.

Azul

Me ha resultado genial....gracias, gracias...Un bikiño enorme! :D

p.d. te he enviando otro con otra duda...claro, soy abusona.

JMiur

Me alegra que funcionara, ahora voy a leer tu mail :)

Azul

Lo he visto, ya....gracias otra vez....por tu atención, mañana lo aplico y seguro que funciona!

:D!

Tincho

Uff que bueno que esta este blog!!muchas gracias

Beto

Nomas no entiendo xD

dejo mi correo por si puedes enviarme una explicacion con peras y manzanas

saludos

beto.paty@live.com.mx

Pablo

Hola , muchas gracias por este post , busque esto durante mucho tiempo :D ; pero aun tengo una duda ; como puedo hacer para que la sidebar o un elemento cualquiera no aparesca en la pagina principal pero si en los post individuales ; gracias y saludos :)

JMiur

Depende de lo que quieras hacer, Pablo pero, en general, se consigue usando los condicionales de Blogger. Fíjate en este post.

Admin

Estimado ante que nada agredecerle por la excelente pagina que nos ha sido util a los que empezamos en el mundo de los bloggers.. bueno al grano deseo saber si es posible que una imagen cualquiera se muestre en la principal pero no en las individuales pero que no esta situada en ninguna sidebar.. no se si me explico pero por ejm tengo esta pagina http://jorgearay.blogspot.com/ y deseo que solo en la principal aparezca esa imagen grande y en las individuales no aparezca .. alguna ayuda gracias de antemano..

JMiur

No sé exactamente cuál es la idea estética pero, una forma sería condicionar esa parte.

Como la imagen esá en un DIV llamado #header-inner, podrías poner algo así antes de </head>

<b:if cond='data:blog.homepageUrl != data:blog.url'>
<style>
#header-inner {display:none;}
</style>
</b:if>

Es decir, se oculta ese DIV en todas las páginas, excepto en el home.

¿Quiere dejar un comentario?

Hay varios métodos posibles.

Uno de ellos es el formulario de comentarios que tan generosamente nos ha regalado Blogger y que funciona sólo de tanto en tanto. Su uso es aconsejable sólo en caso de ser una de esas personas a las que les gustan los retos y los desafíos.
¿No quiere arriesgarse? Haga click para ocultarlo y utilice las otras opciones.

Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.

Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...

Los comentarios están siendo moderados y serán publicados a la brevedad.