JMiur [E]

El uso de los códigos condicionales es lo que nos permite hacer que nuestro blog tenga cierto dinamismo, haciendo que algunos elementos se muestren en determinado tipo de páginas o modificando su diseño por completo.

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.


Hay muchas condiciones posibles pero las más flexibles son las que nos permiten saber en qué tipo de página estamos. Para Blogger, por ahora, hay cuatro tipos:

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 == &quot;item&quot;'>
... esto sólo se verá en las páginas individuales ...
</b:if>
o a la inversa, cambiando la igualdad == por la desigualdad !=
<b:if cond='data:blog.pageType != &quot;item&quot;'>
... esto se verá en todas las páginas excepto en las páginas individuales
</b:if>
Blogger sólo dispone de condiciones simples así que no pueden evaluarse muchas cosas a la vez, sólo una por una. Para entender eso, vamos a usar otra condición útil, la que nos permite saber si estamos en el home de nuestro sitio o no. Ya vimos que el home es una página de tipo index como muchas otras así que ese dato no nos sirve, necesitamos otro:
<b:if cond='data:blog.homepageUrl == data:blog.url'>
... esto se verá en el home ...
</b:if>
Así que si quisiera que algo se viera en las páginas de etiquetas pero no en la página principal del sitio, como ambas son del mismo tipo, debería hacer algo así:
<b:if cond='data:blog.pageType == &quot;index&quot;'>
<!-- 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>
Sólo podemos usar condiciones que puedan responderse por SI o por NO; ¿esto es tal cosa? o bien "si esto es tal cosa hacer algo y si no lo es hacer lo otro".

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 == &quot;http://miblog.blogspot.com/2010/04/titulo.html&quot;'>
... esto sólo se verá en este post y nada más que en este post ...
</b:if>
Para condicionar elementos agregados, simplemente debemos editar la plantilla, expandir los artilugios y buscarlos; la mayoría de ellos tiene el mismo código; en este ejemplo, condicionamos ese widget para que sólo se muestre en las páginas individuales:
<b:widget id='XXXX' locked='false' title='' type='XXXX'>
<b:includable id='main'>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
... cualquier tipo de código que coloque el widget ...
</b:if>
</b:includable>
</b:widget>
En general, lo que debemos hacer es buscar el includable cuyo ID sea main y debajo colocamos la etiqueta de apertura; luego, buscamos el final de ese includable y arriba de esta, colocamos el cierre de la condición.

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:

72 comentarios:

egoloco  

Pregunta: Lees la mente?
Respuesta: Probablemente :D

Hace tiempo quería saber cómo condicionar un post específico. He llegado a la tierra prometida jeje

Por cierto, un post dedicado para vos. De inspiración tuve un Tweet de @Bolsanegra

Responder
Manfenix  

Esto me va a servir para para darle una vuelta de rosca al modo de visualización del blog. A estudiarlo y si todo marcha bien (o no...) te lo muestro. Gracias por el post JMiur. Saludos

Responder
Samuel Rego  

Jmiur, tu blog es una maravillosa herramienta de ayuda. He aplicado en mi blog de pruebas las condicionales y van perfectas pero no he sido capaz de manejar las anidadas. Lo que quería hacer es que un widget me apareciese sólo en tres entradas específicas pero algo debo hacer mal porque el resultado es que no se ve en ningun lado. La solución es tener tres widgets iguales y poner una sola condicional para cada entrada individual pero el resultado es que cada uno de los widgets que no aparecen comen espacio y el que se ve aparece muy descuadrado respecto al post ¿podrías darme una orientación?.
Gracias por todo y un saludo.

Responder
GARABATO  

Oh, creo que esto es justamente lo que ando necesitando… ahora bien, pregunto al Maestro: ¿cómo hago para desconectar el Deep Freeze que tengo alojado en mi cabeza? "reinicie y restaure" me ordena desde adentro, cuando intento copiarte el blog de prueba. ¡Qué miércoles está pasando! :D

Responder
JMiur  

egoloco:
No, no leo la mente XD Ya bastante tengo con tratar de soportar la mia :D
Ahora me fjo en esa dedicación :D

Suerte con eso,Manfenix

Samuel Rego:
Tendría que ver el ejemplo pero, eso que dices es correcto. Creo que habría una forma de no repetir el widget. Estuve tratando de escribirlo acá pero es imposible; déjame pasarlo en limpio con un ejemplo y mañana o pasado lo publico para ver si es una solución aceptable.

GARABATO: Para eso, sólo hay dos soluciones, o resignarse y aprender a convivir con esas manías, o una lobotomía. Me inclino por la primera alternativa ya que la segunda me parece efectiva pero un poco drastica :D

Responder
egoloco  

La dedicación era por lo geek, que se que es lo tuyo

Responder
JMiur  

:D

Responder
La hormiguita  

Está muy bueno... !!!! pero muy bueno.

Responder
Loiskob  

Hols JMiur, ya ni me acuerdo desde cuando visito tu blog y el cual me ha ayudado mucho y como siemnpre tu respondiendo a dudas e inquietudes [de lo mejor], esta vez quekia pedirte porfa un super favor como nunca te lo pedí, tengo esta plantilla : http://xurl.es/txtdeplantilla

Se ve prometedor el proyecto si te fijas [su dominio es : www.mediopasaje.com]

Pero bueno , al grano ; en esa plantilla la cual estoy trabajando no he podido hacer que aparezca el texto inferior de que dice ENTRADAS ANTIGUAS - INICIO - ENTRADAS RECIENTES,el html si las posee pero no se xq no aparecen y lo otro queira que en cada post apareciera una imagen pequeña [algo asi omo el gadget de recent entradas], osea las imagenes pequeñas pero tampoco lo he logrado [eske no kiero usar dicho gadget] ,,, eso seria todo ... te pido de corazon me ayudes con ello tu que eres el mas capo de toda la internet en lo que es blogger... Porfa , puedes revisar el canal youtube de dicho blog y veras que es importante [Es de un programa de tv de Perú] por ello tantas entrevistas, pero deseo ps arreglar el blog, te lo pido si me ayudas pongo un banner de vagabundia en mediopasaje.com ; aunke no creo q nesecites mas trafico de el que ya tienes pero = , es lo menos que podria hacer por tu ayuda, esperando respuestas ..ok men.... gracias de antemano.

Responder
JMiur  

La hormiguita: Espero que le sea útil :)

Loiskob: El problema es sencillo de resolver, al aprecer, todo ese sector está oculto mediante CSS así que deberías eliminar el display: none; de estas definiciones:

#blog-pager-newer-link { display: none; }
#blog-pager-older-link { display: none; }
#blog-pager { display: none; }

Responder
Loiskob  

Mil gracias, asi q era ello, bueno solo una mas porfa , la que te decia que en los post aparezca que se ven aparezca su imagen y de preferencia pequeña ...porfa solo eso mas te lo pido. Mil gracias de antemano.

Responder
JMiur  

Lo de una imagen en los posts no te sabría decir porque estás usando un script que no sé cómo modificar.

Responder
Loiskob  

Oks, no importa, ya me ayudaste mucho en todo este tiempo ,,jeje ,,mil gracias men ,,,en verdad mil gracias..

Responder
refugio palomar  

necesito hacer un codigo que pueda pegar en la pagina www.refugiopalomar.com.ar en una lengueta que se llame ,por ej ,comentenos y que se abra direntamente en el blog de google,que estoy haciendo y que se llama refugiopalomar
gracias

Responder
JMiur  

No entiendo.

Responder
Felipe  

Jeje.. al comentario tuyo de arriba :) (Yo tampoco)
Estos dias estaba haciendo unas pruebas sobre codigos condicionales en el home; para intener crear 2 páginas principales.
La idea era mas o menos asi:

<b:if cond='data:blog.url == "http://elblog.blogspot.com/"'>
...aqui se muestra algo
</b:if>

<b:if cond='data:blog.url == "http://elblog.blogspot.com/index.html"'>
...aqui se muestra otra cosa
</b:if>

Y adaptar estos codigos al Html de la Plantilla.
Tuve la esperanza de que funcionara pero no funcionó. :)

Y mucho menos usando data:blog.homepageUrl, porque procesa el / y el /index.html como lo mismo. (Se me ocurre que puede ser posible con Javascript)
No se si sepas o se te ocurra alguna solucion, pues si me gustaría cambiar "de golpe" el diseño de la página principal y dejar otra alternativa.

Saludos.

Responder
JMiur  

http://elblog.blogspot.com/
y
http://elblog.blogspot.com/index.html

No son dos páginas distintas sino la misma. index.html o index.php según sea el servicio que se utiliza, es el home del sitio y no escribir esa parte, sólo es una convención para indicar el home de manera genérica. No va a funcionar porque en ambos casos, data:blog.url y data:blog.homepageUrl son lo mismo: http://elblog.blogspot.com/

Si puede hacerse con Javascript, leyendo document.URL:


if(document.URL=="http://elblog.blogspot.com/";) {
HACER ALGO
} else if(document.URL=="http://elblog.blogspot.com/index.html") {
HACER OTRA COSA
}

Responder
Felipe  

Gracias por la información.
A la final mas bien decidí "montar" una página de inicio alternativa en una página estática, y pues dejar el enlace a los navegantes.
Menos complicado. ;)
Saludos.

Responder
Ángeles  

Hola Jorge, otra vez te consulto porque siempre me has servido de gran ayuda. Tengo una pregunta, verás, he entendido parte de la entrada y he sabido condicionar algunos gadgets. Ahora querría que el background del Outer-wrapper cambiara de color en todas las entradas con una determinada etiqueta. He intentado combinaciones y demás, pero soy inútil. No sé ni cómo ni dónde se pone. ¿Podrías ayudarme?. Gracias.

Responder
Ángeles  

El enlace del blog es éste: http://abdokari-libya.blogspot.com/

Responder
JMiur  

Eso ya no es tan sencillo de conseguir porque no hay condicionales que permitan controlarlo. Es posible hacerlo pero, debería modificarse el código de Blogger que muestra las etiquetas. El cambio, recién se haría cuando comience a mostrarse el post así que primero habría un color de fondo "normal" y luego cambiaría.

Voy a ver si logro explciarlo en una entrada. Dependiendo de cada blog, el efecto no sería agradable justamente porque no se vería el color desde el inicio.

Responder
@rielCastellanos  

Hola Jmiur, te quiero hacer una pregunta, se pueden condicionar articulos de determinadas fechas, es decir que solo aparezcan el widget que quiero condicionar en los articulos publicados en determinado mes (http://www.mejorarfinanzas.com/2010/10/)

Y la otra pregunta es:

Puedo condicionar segun la etiqueta, por ejemplo. este articulo esta en la eiqueta humor financiero (http://www.mejorarfinanzas.com/2010/10/producto-que-soluciona-tu-problema-de.html) se puede condicionar algo para que solo aparezca en entradas que tienen determinada etiqueta?

Al tanto de tu respuesta, desde ya gracias.

Responder
JMiur  

Lo de la fecha imagino que es posible pero implica tener que usar JavaScript para leer ese dato y evaluarlo de alguna manera.. Es algo que puede extraerse de la misma URL de la página o bien desde el LOOP de las entradas. Debo advertir que, a simple vista, parecería algo demasiado complejo.

Algo similar ocurre con las etiquetas; es un dato que sólo es accesible en el LOOP de Blogger y cualquier cosa que quiera condicionarse, debe hacerse desde allí, usandoJavaScript. ALgo de eso puedes ver en esta entrada.

Responder
Cristian S  

Espero no haber llegado tarde al tema. Me gustaría saber si con los condicionales de Blogger se puede ocultar el contenido del pie de entradas, dependiendo de la etiqueta.

Por ejemplo, si X entrada está etiquetada con "Blogger", se mostrará el contenido sin el pie de entrada.

¿Es posible?

Responder
JMiur  

Cristian:
Nunca es tarde :D

Poder se puede pero, debes usr JavaScript porque no hay códigos condicionales para eso. Un ejemplo de algo similar es el que se meustra en esta entrada

Responder
@rielCastellanos  

Jmiur, no se como decirte, si genio o maestro, creo que ambos calificativos se quedan cortos.

Pues me he pasado un par de horas examinando y haciendo lo que me recomendaste, pero aun no logro completar 100 por ciento mi mision:

Siguiendo tus pasos he logrado condicionar este articulo:

http://www.mejorarfinanzas.com/2010/09/5-errores-que-debes-evitar-en-tu-blog.html

que correponde a la etiqueta SEO

este es un articulo de otra etiqueta y se muestra normal

http://www.mejorarfinanzas.com/2010/08/pelicula-el-origen-como-las-ideas.html

Bien, como ves en la etiqueta SEO se mira la imagen, pero mi objetivo es mostrar un anuncio de adsense en lugar de la imagen, el proposito es motrar anuncios solo en ciertas categorias (con los articulos mas visitados) para no tener lleno de anuncios otras categorias menos relevantes.

Como hago para que aparezca el bloque de anuncios en lugar de donde sta esa imagen???
Estare pendiente de tu respuesta, mil gracias, de verdad, gracias :D

Responder
JMiur  

El tema es que, al no haber condicionales de Blogger, las posibilidades son pocas.

Una, si es que el bloque puede ir en esa misma zona donde se leen als etiquetas es hacer esto:

<b:if cond='data:label.name == &quot;ETIQUETA&quot;'>
... aca pongo el codigo de Adsense ...
</b:if>

Otra posibilidad es colocar el bloque de Adsense en cualquier parte pero dentro de un DIV con un ID:

<div id='algunnombre'>
... aca pongo el codigo de Adsense ...
</div>

Luego, la condición en el bucle de las entrads sería algo así:

<b:if cond='data:label.name == &quot;ETIQUETA&quot;'>
<style> #algunnombre {display:none;} </style>
</b:if>

con eso, simplemente se lo oculta.

Como el bloque de Adsense no puede ser escrito con JavaScript sino que debe estar en al plantilla misma, las cosas no son tan fáciles; si fuera cualquier otro tipo de codigo, se usaría document.write() para escribirlo.

Responder
@rielCastellanos  

Hola Jmiur, gracias a tus consejos he avanzado mucho, ya logro que aparezca el anuncio de adsense solo en articulos con determinada etiqueta, pero no logro ponerlo en el lugar justo donde kiero que aparezca, puedes verlo en esta entrada http://www.mejorarfinanzas.com/2010/09/5-errores-que-debes-evitar-en-tu-blog.html

El anuncio esta hasta abajo de la entrada, al final despues de las etiquetas, pero yo kiero que aparezca debajo del titulo del articulo, tu sabes que debo hacer? se que es algo cansado esto, pero ayudame por favor :D

Gracias

Responder
JMiur  

Imagino que aprece ahí debajo porque ese es el lugar donde está el bucle que muestra las etiquetas.

No hay ningún problema en repetir ese mismo bucle y poner otro arriba, donde quieras mostrar el anuncio; en el de abajo muestras las etiquetas de modo normal y el de arriba sólo lo usas para condicional el anuncio:

<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.name == &quot;ETIQUETA&quot;'>
...... adsense
</b:if>
</b:loop>

Responder
Cristian S  

Logré hacerlo! :D La solución es un tanto casera, pero por lo pronto no he encontrado problemas...

Lo primero que hice fue adoptar el código que posteaste, ese que permite ocultar un artículo dentro de X etiqueta para que no lo muestre si se trata de la página principal.

Una vez hecho eso, abrí otra "secuencia de condicionales" donde usé el "==" en vez del "!=" para que me muestre el posteo en X etiqueta. En vez de dejarlo abierto con un else, cerré el b:if final y me dispuse a trabajar en lo que necesitaba que se vea.

Para eso borré el b:include original del código para los miniposts en la sidebar, agregué algunos datas (cuerpo del post y comentarios) y un elemento div para darle estilo.

Como dije, es muy casera la solución, pero por ahora me funciona... estoy escribiendo un post para explicarlo un poco mejor.

Responder
JMiur  

Me parce perfecto. Lo básico es saber que podemos averiguar la etiqueta en ese bucle y listo, el resto, queda librado a la imaginación de cada uno. Toda solución es casera y esas son las que sirven :-D

Responder
Juan  

Buenas de nuevo,
Tras investigar un poco más, debo replantear mi duda (hacer caso omiso de mi anterior comentario) xD
En concreto lo que ando buscando es que tengo que introducir en el condicional para que en una pagina "index" no me aparezcan los widgets laterales.

Responder
JMiur  

Es que no es tan simple de responder. Una página de tipo INDEX, incluye el home por ejemplo, algo de eso es lo que muestra el post en uno de los códigos. No hay una forma única para hacer eso, dependerá del diseño, de si quieres ocultar toda la sidebar o si quieres ocultar sólo alguna parte.

Responder
Juan  

Pues he estado mirando por otros lados, y conseguí quitar los widgets de todas las paginas menos de la principal, pero se me queda incrustado el fondo, que es una imagen .png y esta relacionado con la variable "tabs.background.color", no se si voy tirando palos de ciego, pero... ¿Cómo podría ocultar esta esta parte?

Responder
JMiur  

Es imposible intentar responder si no sé cuál es tu blog.

Responder
Felipe  

Hola Jorge.
En primer lugar gracias por tu atención y disculpa por molestarte tanto algunas veces.
La pregunta de hoy tal vez puede ser sencilla pero me he liado y no he podido hacerlo.
La idea es sencilla, aplicar condicionales dentro de los gadgets que se añaden a través de "Elementos de Página".

Tengo un gadget de tipo HTML/Javascript y dentro del código aplique el condicional pero no ha funcionado de ningun modo, quiero condicionar un script, así que la idea es esta:


... aquí ejecuto el script...


Y nada. Se que Blogger es mañoso así que tambien probé sustituyendo las comillas sencillas por comillas dobles y tampoco :(
¿Sabes de pura casualidad algo al respecto?

Responder
Felipe  

Ay disculpa Jorge, olvidé hacer el cambio de < y >
La idea es condicionar así:

<b:if cond='data:blog.homepageUrl != data:blog.url'>
...aqui va el script que quiero condicionar..
</b:if>
Gracias!

Responder
JMiur  

No se ve el código, Felipe pero, los condicionales no pueden ser agregados dentro de un elemento HTML o dentro de ningún gadget, siempre deben ser agregados en la plantilla y nunca fuera de ella. Sólo la plantilla misma acepta los códigos XML de Blogger.

Responder
Felipe  

Estamos comentando casi al tiempo jeje :D
Gracias por la aclaración, entonces trataré de poner lo que quiero mostrar a través de la Edición HTML y no como gadget.
Mil gracias y saludos! :)

Responder
JMiur  

Sí, si vas a usar condicionales, es la única manera.

Responder
Bilosony2™  

Hola! Jmiur! tengo una duda como deberia hacer si quiero que las entradas se muestran decierto tamaño cuando estan individualmente y cuando estan en el home tengan otro tamaño.??

Responder
JMiur  

Las condiciones son als que indica la entrada, el contenido, o qué cosas condicionar lo desconzoco porque no sé que quieres hacer; será el ancho o alto de algo pero no sé de qué.

Responder
May ツ  

Hola bueno yo lo que quiero hacer es que cada entrada nueva no aparezca en el home sino en paginas estaticas, como puedo hacer eso??

Responder
JMiur  

Las entradas no son páginas estáticas, son dos cosas diferentes; no sé que es lo que quieres mostrar en tu home.

Responder
May ツ  

Fantástico! justo ahora me ha servido para mi blog...esta genial esta info...

Responder
GuillermoVM  

Despúes de algunas horas de intentos por mi mismo tengo una duda:

Necesito Ocultar la sidebar-wrapper y sidebar-wrapper2 en todo la nevagcion de etiquetas, lo que señalaste como:

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

Puede condicionar todo, menos eso...
Si uso:

como dices que el Home es una pagina tipo index, no sale, intente hacerlo como el ejemplo:





... así que acá muestro algo ...


... acá muestro otra cosa ...



No me salio.

Espero se entienda la idea, saludos.

Responder
GuillermoVM  

Lo mas cercano (segun yo) que pude hacerlo fue así:

<b:if cond='data:blog.pageType == &quot;index&quot;'>
<b:if cond='data:blog.homepageUrl == data:blog.url'>
<style type='text/css'>

#sidebar-wrapper {
float:right;
margin-top:15px;
overflow:hidden;
width:220px;
word-wrap:break-word;
}
#sidebar-wrapper2 {
float:left;
margin-left:10px;
overflow:hidden;
width:140px;
word-wrap:break-word;
}

</style>
</b:if>

<b:else/>

#sidebar-wrapper {
display: none;
visibility: hidden;
}

#sidebar-wrapper2 {
display: none;
visibility: hidden;
}

</b:if>

Como dije lo único que quiero es ocultar sidebar-wrapper y sidebar-wrapper2 en toda la navegación:
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

Ya pude condicionarlo en al archivo, en las paginas estaticas y en paginas individuales de las entradas, pero a eso no le atino :S ufff!

Responder
JMiur  

Esa condición no esta bien estructurada, dice:

<b:if cond='data:blog.pageType == "index"'>
........... SI ES UNA PAGINA TIPO INDEX
<b:if cond='data:blog.homepageUrl == data:blog.url'>
........... Y ADEMAS, ES EL HOME : MUESTRO LA SIDEBAR
</b:if>
........... PERO SI NO ES EL HOME ... NO HAGO NADA AUNQUE ES INDEX
<b:else/>
........... NO ES UNA PAGINA TIPO INDEX Y OCULTO LA SIDEBAR
</b:if>

O sea, hace lo contrario. La solución es similar, pero debes usar el NOT.

PRIMERO, tengo definido que por defecto, la sidebar se muestra, eso no hace falta condicionarlo.

<b:if cond='data:blog.homepageUrl != data:blog.url'>
........ NO ES EL HOME
<b:if cond='data:blog.pageType == &quot;index&quot;'>
........ PERO ES UNA PAGINA INDEX
<style>; ........ ENTONCES OCULTO LA SIDEBAR ........ </style>
</b:if>
</b:if>

Eso, oculta la sidebar en las páginas de etiquetas, archivos y cuando se usa la navegación inferior (anterior y siguiente) ya que todas esas son páginas de tipo index.

Espero que se entienda la idea.

Responder
GuillermoVM  

Gracias, ya quedo. ;)

No le entendía muy bien a la explicación de la entrada, pero esta fue una explicación perfecta. Un Saludo y Felicitaciones :D

Responder
JMiur  

Me alegra que sirviera :-)

Responder
Tuky  

He decidido que cada vez que aprenda algo en tu blog te lo diré, porque te leo desde hace años aprendiendo y muy pocas veces te lo digo.
Hoy, este post me ayudó a condicionar el widget de http://www.linkwithin.com!!
Gracias, Gracias, Gracias!!

Responder
JMiur  

No tiene importancia, Tuky. Me alegro que te sea últil :-D

Responder
Albert Arques  

Hola JMiur,

estaoy desarrolando un sitio web y tengo un pequeño reto, del cual no acabo de librarme con mis intentos. La qüestión és:

Como puedo anular el enlace del titulo de la entrada cuando estoy navegando las entradas de una etiqueta concreta?

Aprovecho también para felicitarle por este magnífico blog sin el cual muchos de nosotros no nos hubiéramos embarcado nunca en la aventura de diseñar para blogger. Te comparto el enlace del sitio que estoy trabajando por si te parece bien echarle un vistazo i ver que te parece www.sinusmanmusic.com

Saludos!

Responder
JMiur  

No hay un condicional para eso, Albert. Las etiquetas son páginas de tipo index al igual que muchas otras como la navegación. De todos modos, para ese diseño, podría intentarlo y ver si tiene efectos indeseados.

No puedo darte los detalles precisos porque esa plantilla sale de lo clásico y usa clases personales así que no sé cual es su estructura pero, si identificas la parte donde se genera ese título, habría que poner algo así:

<b:if cond='data:blog.pageType != &quot;index&quot;'>
....... aca colocas sól oel título ...
<b:else>
....... aca dejas el código normal ...
</b:id>
... esto se verá en todas las páginas excepto en las páginas individuales

Responder
Albert Arques  

Hola JMiur, justo acabando de escribirle el comentario anterior he dado con la respuesta. Igualmente muchas gracias por su atención y sus comentarios.

Un abrazo!

Responder
CristJian  

Hola JMiur :)
Quisiera saber si me puedes ayudar con esto por favor.

Tengo un recuadro de "Artículos relacionados" al final de las entradas de mi blog.

por ejemplo en esta entrada: ¿Los perros ven en blanco y negro

Me he dado cuenta que en el código de la plantilla muestra el número de artículos según el número de etiquetas, por ejemplo si tiene 2 etiquetas y el máximo de artículos relacionados son 10, mostraría 20 artículos en ese cuadro.
¿Cómo podría hacer para que tenga un máximo de 10 artículos relacionados cuando tiene solamente una etiqueta, pero con un máximo de 2 etiquetas se muestren 5 de cada?


Tengo esto en el código de la plantilla en esa área de artículos relacionados:

b:if cond='data:blog.pageType == "item"'>
script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&callback=related_results_labels&max-results=5"' type='text/javascript'/>
/b:if>

Muchas gracias

Saludos :)

JMiur  

EL valor max-results=5 de ese script no indica cuantos se muestran sino cuántos se leerán y es un valor demasiado bajo ya que con ese valor, sólo se cargarán los 5 últimos. Obviamente, si hay pocas entradas publicadas, es indistinto pero, a medida que hay sólo lograrás que se repitan siempre los mismos. Convendría que ahí, el valor fuera entre 50 y 100.

Tal como se entiende ese script, lo que mostrará serán hasta un máximo de 20 artículos relacionados:
while (i < relatedTitles.length && i < 20)
sin importar si tiene 1 2 o 10 etiquetas; incluso, como no mezcla las entradas sino que las lee en orden, si una entrada tiene varias, la mayoría de las entradas relacionadas serán de la primer etiqueta.

Lo de mostrar un máximo de 10 cuando tiene solamente una etiqueta y 5 y 5 si tiene 2 es complicado, habría que re-hacer el script y no tiene mucho sentido; me parece que te convendría usar el viejo script que puedes ver en esta entrada que funcionará mejor y dará resultados más variados ya que primero leerá en orden y luego, mezclará los resultados de tal modo que siempre sean variados.

CristJian  

Gracias por la respuesta JMiur, disculpa la mia pero recién me doy cuenta de la notificación en mi mail.

A ver si comprendí bien:

el script entero que tienes en la entrada que me recomendaste debo ponerlo encima del /head> y la parte del código que te puse en mi comentario anterior debo borrarla y poner este:

script type='text/javascript'>
removeRelatedDuplicates();
mixRelatedLabels();
printRelatedLabels();
/script>

Estoy en lo correcto o debo añadir algo más?

Gracias :)

JMiur  

Si, algo por ese estilo si es que quieres cambiarlo.

Responder
memento  

es posible esconder las css tambien de una ID
si ves el perfil de mi blog, logro ocultar el contenido del ID en las entradas individuales pero no consigo que el css desaparezca (los 3 gadget de colores)
Gracias por anticipado!!!

JMiur  

Tu perfil no es público así que no sé de que blog se trata.

El CSS no se esconde, lo que puedes hacer es ocultar algún elemento o varios y eso, puede hacerse tanto indicando una clase como un ID.

Responder
fabian  

Hola, Muy buena informacion, queria preguntarte si tienes conocimiento de un condicional para ocultar un gadget a lo que publica un autor en especifico, encontre uno para mostrar gadget en los post que escribe un autor especifico que es este:
<b:if cond='data:post.author == "nombreautor"'>
¿Hay algun condicional que haga lo contrario a este osea que oculte lo que quiero en los post de un autor especifico?
Saludos y Gracias!

JMiur  

La condición inversa es:

<b:if cond='data:post.author != "nombreautor"'>

Responder
Miguel-Anxo Varela Diaz  

Hola. Estoy con tu blog como un niño con zapatos nuevos. Me gusta mucho.

El caso es que ando buscando la manera de redireccionar la raíz (www.blogcondominiopropioporejemplo.com) a una página estática (.../p/paginadebienvenida.html). Luego incluyo un enlace que lleva a www.blogcondominiopropioporejemplo.com/?posts para ver las entradas del blog.

¿Se podría hacer así? Yo estoy intentándolo con javascript pero aún no atiné a la sintaxis correcta.

Gracias de antemano.

JMiur  

Fíjate en estas dos entradas: 1 | 2

Miguel-Anxo Varela Diaz  

He hecho así, utilizando el código de blogger para condicionales, y redirecciona bien desde la raíz:

<b:if cond='data:blog.url == data:blog.homepageUrl'>

<script language='Javascript'>
{
location.href=&#39;/p/portada.html&#39;;
};
</script>
</b:if>


Lo malo es que si voy a la dirección
www.blogdeejemplo.com/?posts
también detecta que estoy en la raíz del blog y vuelve a redirigirme, por lo que no puedo tener una lista de las entradas. ¿Se podría hacer que, por ejemplo, sacara las 7 últimas entradas con un filtro?

JMiur  

Hacer redirecciones con JavaScript tiene sus bemoles. Antes de ponerla en práctica, revisa si esa redirección no viola las directivas de Google.

Miguel-Anxo Varela Diaz  

Caray, no lo había leído.
El condicional lo he puesto sólo cuando se usa el dominio personalizado, no si entras desde blogspot.com ¿sigue siendo mal visto?

JMiur  

Lo del dominio es indistinto; ambos, el personalizado y el de blogspot son el mismo; la re-dirección se hace desde el servidor (Blogger) y por eso, esa re-dirección es válida. Cuando se entra por blogspot, se redirige al dominio personal; si no es así, es que algo no funciona.

Las re-direcciones que se hacen con JavaScript son siempre dudosas y eso no significa que no deban usarse sino que deben usarse con cuidado y, ni a los motores de búsqueda ni a los usuarios, les gusta que si se quiere abrir cierta url, esta, no exista y se vea otra.

Por eso te indicaba alas dos entradas de ejemplo; para que en el home no se vea el blog si no algo estático, lo mejor no es re-dirigirlo sino condicionar la plantilla de tal forma que se vea distinto según la url. El tema de cómo ver el blog ya es distinto y ahí debe usarse JavaScript para mostrar/ocultar el home "normal"

Este tipo de metodología, sea cual sea, garantiza que los buscadores verá siempre el home o index de modo normal y lo indexarán correctamente cosa que es imposible si se re-dirige a una página estática o si se muestran las entradas leyendo los feeds ya que los motores no leen JavaScript.

En resumen, todo depende de lo que cada uno pretenda y no hay soluciones universales ya que Blogger no dispone de ese tipo de alternativas; está pensado para alojar blogs y nada más.

Miguel-Anxo Varela Diaz  

Gracias por informarme, voy a intentar cambiarlo por la estructura que dices, ocultando y desocultando widgets. Me parece más complicado, pero al menos no se compromete el blog ni su lugar en los buscadores. Mil gracias.

Responder
Yurika-Chan  

Hay alguna forma de que muestre determinada cosa en una pagina individual con cierta etiqueta, por ejemplo quiero mostrar una imagen, solo en las entradas individuales que tengan la etiqueta "Noticia" se puede??

JMiur  

No hay condiciones para eso. Deber ver y tratar de entender cómo funciona el loop de Blogger que muestra las entradas y allí tratar de usar javascript para crear alguna función que haga eso.

Responder

¿Quiere dejar un comentario?

recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...

Todos los archivos y demos alojados en Fileden han sido redireccionados y deberían estar funcionando correctamente.
De todos modos, también puede accederse a ellos a través de SkyDrive

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 ...

 
CERRAR