data:blog.pageType
que puede contener tres valores: item, archive, main
data:blog.pageType == "item"
es una página de entradas individuales
data:blog.pageType == "archive"
es una página del archivo
data:blog.pageType == "main"
es la página principal
<b:if cond='data:blog.pageType == "item"'>
... código ...
</b:if>
sólo se mostrará en las páginas de entradas
<b:if cond='data:blog.pageType != "item"'>
... código ...
</b:if>
no se mostrará en las páginas de entradas
== igualdad
!= desigualdad
&& AND lógico
|| OR lógico
Para que un widget (elemento) SÓLO se muestre en un determinado tipo de página, debe insertarse un código condicional dentro del elemento. Todos los elementos comienzan con una línea de este tipo:
<b:widget id='tipoN' locked='false' title='nombre' type='tipo'>
donde tipoN indica el tipo de elemento seguido de un número de orden
title es el título que le dimos al agregar el elemento
y type nuevamente indica el tipo de elemento (List, Image, HTML, Text, etc.)
<b:widget id='tipoN' locked='false' title='nombre' type='tipo'>
<b:includable id='main'>
y aquí insertamos a condición
<b:if cond='data:blog.pageType == "item"'>
... el resto del código que quedará oculto ...
</b:if>
</b:includable'>
</b:widget'>
Para que NO SE VEA en las páginas de entradas individuales usamos:
<b:if cond='data:blog.pageType != "item"'>
Para que SÓLO se vea en las páginas de archivo usamos:
<b:if cond='data:blog.pageType == "archive"'>
Si bien existe la opción de indicar main para la página principal, no he logrado que funcione por lo que utilizo otro dato. De tal manera, si SÓLO quiero ver un elemento en la página principal, la condición es:
<b:if cond='data:blog.url == data:blog.homepageUrl''>
Es muy importante entender que el widget (elemento) NO PUEDE ocultarse en su totalidad ya que Blogger Beta impide que b:widget sea precedido por cualquier línea de código. Por lo tanto, sólo podemos "manipular" su contenido.
Esta limitación hace que, si en las declaraciones de estilo, los widgets tienen alguna característica visual como por ejemplo un recuadro, este se verá igual (tendremos un recuadro vacío).
También es importante saber que, hay páginas, como las que accedemos a través de las etiquetas y las que abrimos al usar los vínculo Entradas más recientes, Página Principal y Entradas antiguas que no es muy claro a que tipo pertenecen así que lo mejor es probar con condiciones de igualdad y desigualdad hasta lograr el resultado deseado.
También pueden leerse estas dos páginas de ayuda de Blogger:
Códigos de artilugio de "Diseños" ver la sección Inclusión y exclusión
Códigos de información de "Diseños" ver la sección Información disponible globalmente
66 comentarios:
Pues muchísimas gracias por tu respuesta y por tu tiempo, no me esperaba ni una cuarta parte. Por fin entiendo como funcionan los nuevos "condicionales".
El problema es ese que dices de que no se pueden poner antes del código del widget. En mis "investigaciones" había logrado ocultar el contenido del widget, pero al tener en el css los widgets metidos en "recuadros" pues eso, me quedaban recuadros vacíos (casi peor el remedio que la enfermedad).
De todas maneras muchas gracias, de verdad.
Saludos!
Recién ahora pude ver tu blog y entiendo que el problema se remite a una sola línea de tu plantilla:
.sidebar .widget,.main .widget {
... border: 1px solid #333333; ... }
que "recuadra" todos los widgets, sin importar que tengan o no tengan contenido.
Has logrado despertar mi curiosidad y estuve husmeando tu código fuente y buscando información en la Web sin ningún resultado.
Creo que, lamentablemente, hemos llegado al mismo callejón sin salida. POR AHORA, la solución queda pendiente.
me gusta tu bloc, ya me ha hecho algún papel que otro en el tema de personalizaciones del blog, pero no consigo quitar las miticas líneas separadoras que separan un artilugio de otro en la sidebar. Sabes como hacerlo? ya me molestan demasiado, quiero quitarlaaaaasssssss. Gracias, espero una solución.
do-cu:
En tu caso, deberás eliminar la propiedad que las dibuja:
.sidebar .widget, .main .widget {
border-bottom:1px dotted #333333;
simplemente borra esa línea o, si quieres conservarla por algún motivo, puedes inhabilitarla así:
/* border-bottom:1px dotted #333333; */
Eres increible, mas veloz que el viento, no sabes lo que me a mareao esta tontería, hace un rato casi doy con la solución, pero fué en vano. Muchas gracias!!!! y en hora buena por tu bloc. Te lo curras!!!!
Buenas, quería saber cómo hacer para ocultar la sidebar (creo que se llama así la barra superior de Blogger). ¿Me dás una pista mas concreta que no soy del palo tech y me mareo con tanto código? Mil zancs!
Guille:
La barra horizontal que aparece arriba de Blogger es la NAVBAR (barra de navegación). Hay dos posts donde puedes verlo:
Tres trucos simples
Efectos para la Navbar de Blogger
Si sólo quieres que nos e vea, es muy sencillo de hacer. Cualquier problema, me avisas.
Hola. Estuve leyendo el post, pero tengo una duda: ¿puedo con este método ocultar una sidebar completa?
A ver si me explico mejor: lo que quiero lograr es que en la home de mi blog me muestre las tres sidebar, pero que al ingresar a la url de una entrada sólo muestre una de las tres. ¿Es eso posible?
Gracias de antemano.
Saludos
Andrés:
Es una idea interesante.
Lo que quieres hacer es posible. Por supuesto, habría que ver los detalles pero, conceptualmente es posible utilizar los condicionales de Blogger en cualquier parte de la plantilla.
Eso sí, debes tener en cuenta que al ocultarse un elemento vertical como la sidebar, el resto de los elementos (los posts y las otras sidebars) ocuparán ese espacio, se extenderán para ocupar el ancho total.
Te aconsejaría crear un blog de pruebas, copiar y pegar tu plantilla en él y hacer las pruebas ahí para evitar tocar el blog original.
Lo voy a probar. Ya les contaré cómo me fue...
Gracias otra vez.
Saludos
De lo mejorcito que eh visto en cuestión de trucos.
Super weno tu truco... pero, qué pasa cuando abro con etiquetas? pq si hago eso se me ven de todas formas los elementos que traté de ocultar en la pagina principal
Hay que ver el caso particular pero creo que con un código condicional puede evaluarse cuando se muestra una página de etiquetas y actuar en consecuencia:
<b:if cond='data:blog.pageType == "archive">
... hacer algo ...
</b:if>
Muchas gracias porque es muy interesante. ¿sabes si esposible condicionar el widget a 2 páginas utilizando un condicional? Es decir, utilizar cond='data:blog.url == data:blog.homepageUrl para lograr que aparezca en SOLO DOS PAGINAS. Lo estoy intentando pero no lo he logrado. Gracias
No entiendo muy bien la pregunta Rosa, si me explicas un poco más tal vez pueda contestarte. Si quieres, me mandas un mail contándome qué deseas hacer o cuál es el resultado que quieres obtener.
Esa parte "en solo dos páginas" es lo que no alcanzo a comprender ... debe ser porque hoy sábado y mi única neurona está un poco adormilada :D
Espectacular la información que regalas, muchas gracias. ¿Alguna idea de cómo hacer para que un elemento se muestre sólo en una URL del tipo "blog.blogspot.com/search/label/etiqueta"?
Me explico: con un condicional hice, por un lado, que una porción de HTML NO se muestre en las páginas Item, pero sí aparece en las etiquetas (en realidad quería que sólo se viera en Main pero no lo logré).
Por otro lado, un condicional impide que los posts se muestren en Main. Esta última parte funciona perfecto, pero tampoco me muestra las entradas en las páginas de etiquetas, sólo aparece lo que debería ir en Main.
Si hay tiempo libre, este es mi blog. Gracias!
Eso parecería ser una limitación de Blogger. Hasta donde sé, la única codición posible de evaluar es si estamos o no estamos en una página individual:
data:blog.pageType == "item"
El resto de las páginas parecen ser tratadas igual. No veo ninguna forma de "saber" si estamos en una página de etiquetas o en los resultados de una búsqueda o en una de archivos.
Bueno, muchas gracias igual; el resto de la información me sirvió bastante. Saludos, y gracias de nuevo.
Tengo una consulta respecto a este tema.
¿Es posible combinar dos condiciones?, me explico, por ejemplo combinar item y archive para que el elemento se muestre en las paginas individuales y archivos.
Y una consulta aparte; Cómo haces para tener las páginas "indices", las cuales no muestran post-footer (y corresponden a post, cierto?)? usas algo de esto o no?
Salu2
Hasta donde he podido probar, Blogger no acepta dos condiciones juntas pero es posible armarlas anidando las cndiciones. Por ejemplo, algo así podría funcionar:
<b:if cond='data:blog.pageType == "item"'>
.... HACER ALGO
</b:else>
<b:if cond='data:blog.pageType == "archive"'>
.... HACER LO MISMO
</b:else>
.... HACER OTRA COSA
</b:if>
</b:if>
Lo que uso para la parte de índices está explicado en este otro post. No es lo mismo, en realidad, es un truco para poder modificar el estilo el blog desde cada entrada en particular.
Vale, se agradece como siempre. Voy a ver que resulta. Salu2
Hola vagabundia,
lo primero muchas gracias por tus ayudas, son muy útiles.
Quería saber si este truco se puede usar para que los widgets o artilugios se muestren en algunas páginas secundarias pero no en otras. Te pongo un ejemplo.
Quiero que un texto salga cuando se busque una etiqueta, y que otro salga cuando busco otra. Por ejemplo, quiero que si se busca "unblog.blogstpot.com/search/label/Categoría 1", aparezca un artilugio diferente a si se busca "unblog.blogstpot.com/search/label/Categoría 2".
No sé si me he explicado muy bien pero agradecería tu ayuda.
Justo estoy experimentando con eso y estaba armando algunos posts al respecto; de hecho, ya estoy aplicando alguna de esas alternativas en el blog.
Con las etiquetas, el problema es diferente ya que Blogger no nos dice la etiqueta del post hasta que lo muestra y con los condicionales sólo determinamos si estamos en una página individual o no. Podría hacerse con JavaScript, leyendo la URL.
JMiur, gracias, pero me temo que no me solucionas nada!!!! jajajaja
Tengo que esperar a tu post, o me puedes adelantar un poco¿? Yo de javascript no tengo ni idea, así que si sabes hacerlo, por favor pasame el codigo!!
Gracias
Sobre la detección de las etiquetas, aún no tengo nada preparado; intentaré hacerlo, sólo es una idea un poco abstracta :)
Hola, es un tema viejito ya, pero veo que quedo algo pendiente, ya que no lo encontre ni en el post ni en los comentarios, la pregunta es:
¿Como hago para condicionar un widget a una pagina espesifica?
Por ejemplo una etiqueta determinada.
Hay una reseña por hay, en la que se menciona que lo tenias como proyecto, pero en tu blog hay tanta informacion que si está, no lo puedo encontrar , si ya lo haz hecho, seria un gran favor pasarme la url del post, y sino, a ver si me das una ayudita para ver como hacer lo que te pregunte, espero que se pueda hacer, gracias de antemano.
No, no hay nada como eso publicado porque no es algo que aún pueda resolver.
JMIUR existe alguna forma de ocultar el titulo de un elemento en la sidebar, cuando el titulo tiene de fondo un color, anteriormente no puede hacerlo en otro blog probablemente ahora se pueda o pase algo por alto
Una forma es buscando el código correspondiente y eliminándolo :
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
Otra forma es buscar el ID y ocultarlo con CSS:
#EL_ID h2 {display:none;}
Me perdí en la explicación, Malina. No entiendo en qué paginas se muestra y en cuales no se muestra. Una lista de esas condiciones puede verse acá pero,si se trata de detectar esas páginas de navegación, hay dos condiciones posibles:
<b:if cond='data:blog.pageType == "archive"'>
esto sólo se mostrará en las páginas que listan entradas
</b:if>
<b:if cond='data:blog.pageType == "index"'>
esto se mostrará en todas las demás
</b:if>
combinando todos los IFs es posible hacer que que algo se muestre u oculte en casi cualquier condicion pero ahi me perdí :D
Veamos si es asi:
1. Mostrar el widget en todas las páginas, menos en las individuales y el home.
<b:if cond='data:blog.pageType != "item"'>
<b:if cond='data:blog.url != data:blog.homepageUrl'>
........... NO es individual y NO es home entonces, MOSTRAR widget
</b:if>
</b:if>
2. Mostrar widget en listas de categorias solamente. Eso no veo como es posible hacerlo ya que para Blogger es el mismo tipo de página que cuando navegas atras o adelante. Sólo hay tres posibles:
item cuando es individual
archive cuando entras usando el elemento Archivos
index todas las demas
Se me ocurre que lo más cerca que podrias acercarte a eso es así:
<b:if cond='data:blog.pageType == "index"'>
<b:if cond='data:blog.pageType != "archive"'>
<b:if cond='data:blog.url != data:blog.homepageUrl'>
........... NO es individual, NO es home y NO es archivos entonces, MOSTRAR widget
</b:if>
</b:if>
</b:if>
Suerte, Malina.
Hola!! JMiur.. Tengo una duda, como hiciste para ocultar las estadsiticas y que sigan funcionando?? porque normalmente yo las e ocultado pero en ese momento dejan de funcionar y no registran las visitas ni nada hasta que las ago aprecer de nuevo... Alo que me refiero es hacer como tu as echo con tus estadsiticas de ocultarlas y que funcionen normalmente ocultas.. Me podrias explicar como??
desde ya gracias y suerte!!!!!
No he visto que haya problemas cone sas cosas, dependerá del sistema que uses. google Analytics es invisible, StatCounter tiene esa opción disponible; Sitemeter es un script por lo tanto no importa si está visible o no y Keegy hace algo similar; esos son los que alguna vez he usado.
Si en cambio, se utilizan algunos que son objetos de Flash como los que tienes en tu blog, esos, no funcionarán a menos que sean visibles.
Gracias entonces vere que les ago jeje siento que me obsecione con las estadsiticas y sobrecargue el footer de ellas jeje..
Suerte!!!
Muy buena explicación como siempre. No he podido encontrar como ocultar la imagen de fondo para una página estática, es posible? Quizá cambiarla por otra en algún post? Que piensas? Gracias por tu tiempo.
Tendría que ver tu blog pero, podrías eso es posible, no sé dónde está esa imagen de fondo, puede ser en el body etc. Una vez que encuentras donde está, simplemente, colocas un condicional. Supongamos que estuviera en el body y dice esto o cualquier cosas similar:
body {background: #123456 url(la_imagen) repeat left top;}
Lo condicionas así:
<b:if cond='data:blog.pageType == "static_page"'>
<style>
body {background: #123456 url() repeat left top;}
</style>
</b:if>
La imagen de fondo debería estar en background y para eliminarla, simplemente colocamos url()
Gracias, no me resulta. Dejame ver sí me explico mejor. Yo quisiera que las páginas estáticas tengan diferente imagen de fondo, por ejemplo inicio: Quiero que esa página tenga una imagen de fondo diferente a mi página estática de acerca de...gracias nuevamente por tu tiempo.
Si de lo que se trata es de tener fondos diferentes en distintas páginas, usa condicionales pero de este modo:
<b:if cond='data:blog.url == "URL_pagina1"'>
<style>
body {background: #123456 url(IMAGEN1) repeat left top;}
</style>
</b:if>
<b:if cond='data:blog.url == "URL_pagina2"'>
<style>
body {background: #123456 url(IMAGEN2) repeat left top;}
</style>
</b:if>
De ese modo, el estilo (cualqueira sea) sól ose aplicará en determinada página, indicándo en la condición, cual es la URL de esa página.
porque puede ser que no me ande .......grrrr No se ha podido analizar su plantilla, porque no está bien formada. Asegúrese de que todos los elementos XML se han cerrado correctamente.
Mensaje de error de XML: The element type "b:includable" must be terminated by the matching end-tag "".
El mensaje te indica que hay una etiqueta mal cerrada o una comilla faltante. Habría que ver el códigoq ue quieres poner para responderte.
hola jmiur vengo de nuevo con otra sencilla pregunta ¿hay alguna forma de ocultar alguna etiqueta en particular en las entradas, que yo la ponga al momento de crear una entrada pero que no se vea?
por ejemplo que le ponga "2010" en las estiquetas de las entradas, pero que al ver el blog no aparesca esa etiqueta?
GraXX por todo =)
Luis:
No sé exactamente la idea pero, puedes usar una etiqueta que normalmente no apiques y que resulte sencilla de recordar, por ejemplo: abbr o cualquier otra y agregar esto en tu CSS:
abbr {display:none;}
<abbr>2010</abbr>
o bien usar una etiqueta normal como span y ponerle una clase:
span.oculta {display:none;}
<span class="oculta">2010</span>
Jmiur perdoname pero no te entendi o no me explique muy bien pero hay te va mi idea mas explicada:
Esque quiero por ejemplo al momento de crear una entrada o un post no ves que en la parte de abajo del post hay un campo de texto en blanco donde debes de colocar las etiquetas del post ejemplo: carros,accion,juegos, bueno lo que quiero saber es que a la hora de publicar el post o la entrada aparecen las etiquetas que yo le puse para identificar el post o en que categoria esta la entrada pero como le puedo hacer que al momento de escribir la etiqueta juegos y que al publicar el post esta no aparesca en la pagina principal o en la entrada, pero que yo al momento de ponerla en el menu con el link para accesar a esta etiqueta me muestre todos los articulos con esa etiqueta pero sin que se vea en el blog?
se podra?
¿Lo que quieres es que cierta etiqueta no se muestre en el footer de cada entrada? Si es así, deberías tratar de buscar el LOOP donde se escriben que es algo así:
<b:loop values='data:post.labels' var='label'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a>
<b:if cond='data:label.isLast != "true"'>|</b:if>
</b:loop>
y condicionarlo; por ejemplo, si quiero que la etiqueta PALABRA no se muestre, podría intentar algo así:
<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.name != "PALABRA"'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a>
</b:if>
<b:if cond='data:label.isLast != "true"'> , </b:if>
</b:loop>
Muchas grasias Jmiur eres unico man porfin funciono =) oye pero la comita esa despues de una etiqueta no se puede quitar? creo que es mucho pedir, porque aparece la etiqueta visible y despues una coma y luego la etiqeuta invisible pero la come sigue =)
MUCHAS GRASIAS !!!!
La coma la puesdes sacar o colocar cualquier carácter separador, incluso un espacio.
Sino, puedes colocar el IF dentro del otro, más o menos así:
<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.name != "PALABRA"'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a>
<b:if cond='data:label.isLast != "true"'> , </b:if>
</b:if>
</b:loop>
hola muy interesante, como seria si yo por ejemplo quiero ocultar el widget chat qtengo a pie de pagina, para q aparezca en todos los sectores del blog excepto en una pagina especifica llamada chat.gracias :)
Deberás condicionarlo usando la URL de esa página:
<b:if cond='data:blog.url == "LA_URL_DE_LA_PAGINA"'>
........... el código del chat ...........
</b:if>
muchas gracias, perono me sale, nose qestare haciendo mal . porejemplo, este es el linkdel chat que quiero poner http://thdjsclub.blogspot.com/p/radio-chat.html . se podra apreciar q el chat aparece arriba pero tambien aparece el chat del pie de pagina (este es el chat q aparece en todos los sectores del blog). La idea esocultar este chat del pie de pagina en esta url especifica antes mencionada. Cuando coloco lacondicion y dentro el codigo del xat me sale error .
Elcodigodel chat comienza con ().Muxhas gracias
Esto, sería lo correcto:
<b:if cond='data:blog.url == "http://thdjsclub.blogspot.com/p/radio-chat.html"'>
........... aqui el código ...........
</b:if>
pero, no sé dónde estás poniendo eso ni cuál es el código interno que agregas para que salga un error.
CHAT sellama el widget del pie de pagina que quiero ocultar
(codigo generado por xat)
No se ha podido analizar su plantilla, porque no está bien formada. Asegúrese de que todos los elementos XML se han cerrado correctamente.
Mensaje de error de XML: The element type "b:if" must be terminated by the matching end-tag "".
el codigo generado por chat no puedo introducirlo en el comentario , me sale q el html no es aceptable :)
Envialo por mail.
si quiero que dos condiciones cumplan el mismo objetivo como lo hago ? ejemplo
si (llueve ) o (el dia se nubla) = no salgas
En Blogger no existe la posibilidad de combinar condiciones ya que no hay operadores como AND u OR así que, debes poner ambas y duplicar el código.
Hola Quiero borrar la barra que esta debajo de las entradas (la que tiene las titulos de publicado por, comentarios , etiquetas, boton +1, facebook etc. ) voy a editar entradas destildo todas las opciones para que no me aparesca nada, pero siempre me aparece:
"0 comentarios"
"Etiquetas: superacion personal"
Y no se como hacerlo me podrias ayudar??
Desde ya muchas gracias
Lo ideal sería que buscaras el código del post-footer pero, si no lo encuentras o te resulta complejo, puedes agregar regla de estilo al CSS.
Si buscas:
.post-footer {
......
}
y agregas display: none; ocultas todo ese sector:
.post-footer {
......
display: none;
}
Si quieres ocultar sólo alguna de las líneas, debes agregar reglas como estas;
.post-footer-line-1 {display: none;}
esto sólo ocultará la primera línea que ahora no tiene textos pero ocupa espacio
.post-footer-line-2 {display: none;}
esto sólo ocultará la segunda línea donde está lo de Etiquetas
Gracias por tu ayuda pude hacer desaparecer la barra haciendo esto
.post-footer {
......
display: none;
}
.post-footer-line-1 este codigo no lo encontre solo aparece sin el "punto" .
Ahora me gustaria que me ayudes a poner lineas delgadas como separador entre cada entrada te dejo un ejemplo de una pagina que vi
http://www.seduccionvip.net/ algo asi me gustaria que quede mi blog
post-footer-line-1 es una clase, si quieres agregar una regla para esa clase, debes colocar el punto delante tal como lo indiqué. Digo agregar porque en tu plantila, no hay una regla estabelcida para esa clase y es por eso que no la encuentras.
Para agregar una línea sin tocar el HTML, ería bueno que usaras las propiedades que te di:
.post-footer-line-1 {display: none;}
.post-footer-line-2 {display: none;}
.post-footer-line-3 {display: none;}
y cambiaras esta así:
.post-footer {
border-bottom: 1px solid #EEEEEE;
margin: 20px -2px 0;
}
Gracias te la sabes todas y una cosa mas necesito la misma linea pero que apareca arriba de las entradas relacionadas (tengo linkwithin)
entradas
____________________ << esta linea me "falta"
entradas relacionadas (linkwithin)
____________________ << esta linea hice con tu codigo
Desde ya muchas gracias
Ese detalle ya no puedo dártelo. Ahí deberás buscar el HTML porque desconozco la forma en que colcoas ese script.
ok amigo no hay problema en cuanto a la linea que me diste la puedo hacer un poco mas para arrbia?? por que me queda mucho espacion en blanco.
avisame si se puede hacer eso
= muchas gracias
No sé cua´l es el ejemplo sobre el que estás probando.
http://seducevip.blogspot.com/ este es mi blog amigo y me gustaria hacer un poquito mas arriba la linea que me pasaste espero que se pueda
Es el que vi pero, tal como te decía, no hay forma de hacerlo sól ocon CSS ya que no hay ningún elemento donde aplciar reglas de estilo y por l otanto, debes agregar el HTML.
No es algo que pueda indicarte dónde ya que no se ve online sino sól oen la plantilla.
¿Quiere dejar un comentario?
recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...
Nota: sólo los miembros de este blog pueden publicar comentarios.
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 ...