-
►
2012
(19)
-
►
enero
(19)
- Optimizar SEO para Blogger. Evitar META duplicadas...
- Un lustro ¿Eso es mucho o es poco para un blog?
- Elemento que desaparece tras un tiempo. Portada de...
- Una solución para la paginación de comentarios ant...
- Conoce las preferencias de tus lectores con el nue...
- Avatar personalizado para comentarios (anidados) a...
- ¿Blog en blanco? Solución al problema con IE tras ...
- Cosas sencillas. Cambio tipografía para pie de fot...
- Almacenar y recuperar datos Blogger. Variables DAT...
- Almacenar y recuperar datos Blogger. Variables DAT...
- Todo sobre el nuevo sistema de comentarios Blogger...
- Formato a imágenes con CSS. Particularidades Blogg...
- Numerar los nuevos comentarios Blogger sin JavaScr...
- Volver al diseño de comentarios previo a las repli...
- Blogger. Configurar comentarios anidados. Lista de...
- Insertar respuestas (replies) Blogger en plantilla...
- Nuevos comentarios anidados en Blogger
- Formato a imágenes con CSS. Padding.
- Formato a imágenes con CSS. Clases.
-
►
enero
(19)
-
►
2011
(105)
-
►
diciembre
(13)
- Feliz 2011 ¡Oops! (transiciones)
- Solucionando los problemas con el botón +1
- Sólo necesitas 5 herramientas para escribir los me...
- Text-shadow y el brillo de la Navidad
- Botones CSS con rollover sencillo
- Feliz Navidad Blogger. Iconos.
- Diseña la portada de tu nuevo timeline de Facebook...
- Error bX-l4u1mh (Diciembre 2011)
- Comentarios desplegables en Blogger
- Personalizando los botones sociales de AddThis
- Cinco trucos para poner nieve en tu blog ❄❄
- Plantilla para tienda online: Blogger Store
- Aviso automático en Twitter de nuevas entradas Blo...
-
►
noviembre
(13)
- Cubrir una capa con otra que se puede ocultar con ...
- Situar el gadget buscador junto al título del blog...
- Go Daddy simplifica el uso de dominios propios con...
- Cabecera en móviles para blogs sin cabecera
- Crear un sitemap con Herramientas para Webmasters
- Sitemaps y Blogger
- Facebook no permitirá importar contenido RSS a par...
- Problemas al acceder a la plantilla con la nueva i...
- Presentada la VI edición de los Premios 20Blogs
- Oloblogger.com Cambio de dominio con Blogger
- Alguien nos vigila...
- Marcar imágenes ampliables con un puntero distinto...
- Botón para que te sigan en Google Plus
- ► septiembre (6)
-
►
diciembre
(13)
-
►
2010
(138)
- ► septiembre (11)
-
▼
2009
(119)
-
▼
noviembre
(11)
- Blogumus definitivo
- Cambiar estilo según el tipo de página
- Menús, botones, banners y textos con flash
- Menú de pestañas
- Indice por categorías (tipo sitemap)
- Indice por categorías
- Entradas relacionadas con miniaturas
- Encontrar imágenes licenciadas CC en Flickr
- Modificar la anchura en los enlaces de navegación
- Una ventana (bloque) emergente con un click
- Botón para ofrecer suscripción por correo
- ► septiembre (15)
-
▼
noviembre
(11)
-
►
2008
(110)
- ► septiembre (14)
-
►
2007
(57)
- ► septiembre (5)
-
►
2006
(3)
- ► septiembre (3)
Blogumus definitivo
29/11/2009
O tal vez no, pero al menos funciona en todos los navegadores mientras alguien encuentra dónde está el fallo del actual código. Este post va para todos aquellos que tienen problemas con la ya famosísima nube de etiquetas Cumulus en su versión Blogger: Blogumus.
En primer lugar, puede que los tengas y no lo sepas. Los que yo he detectado son dos. Uno es que desaparece una etiqueta de forma aleatoria en la nube, por lo que muestra n-1 etiquetas de entre todas las que tengamos. El otro es quizás el más importante y consiste en que en IE, la nube se ve, pero los enlaces no funcionan: al pinchar en ellos no vamos a ninguna parte.
Si quieres forzar a tus lectores a que se cambien de navegador, no te importa que no funcionen los enlaces porque con el efecto estético tienes bastante, te da igual que de vez en cuando se pierda una etiqueta, tienes más de 25 categorías o simplemente eres algo perezos@, no hace falta que sigas leyendo, porque para solucionar el tema, es necesario colocar los enlaces de manera manual y no se obtienen automáticamente del gadget Blogger para etiquetas, cómo sí ocurría con el código anterior.
Y si sigues por aquí ¡al tajo! El concepto es sencillo, pero cómo decía, da un poco de trabajo. Tenemos que copiar este código y añadirlo cómo nuevo gadget HTML/JavaScript:
En lugar de NOMBRE_BLOG, colocamos el nombre de nuestra bitácora para completar correctamente la dirección y en lugar de ETIQUETA se coloca la primera que querais probar (dos veces la misma). Podeis guardar el gadget y comprobar que funciona el enlace en todos los navegadores.
Si es así, ahora es cuando viene el trabajo. A continuación de lo que hemos escrito en gris y con la misma estructura, tenemos que ir añadiendo enlaces al resto de nuestras etiquetas sustituyendo de la misma manera que antes (copy-paste con una y sólo tendrás que cambiar el nombre de las etiquetas):
Elementos que sirven para la configuración:
TRUCO: Para conseguir que el fondo sea transparente, integrándose totalmente con el fondo del propio blog, habría que insertar wmode="transparent" como atributo del EMBED, por ejemplo...
Actualización Marzo 2010: Este sistema funciona correctamente pero actualmente existen problemas con el fichero tagcloud.swf original, por lo que ha de ser sustituido. Más información en Reparar Blogumus.
En primer lugar, puede que los tengas y no lo sepas. Los que yo he detectado son dos. Uno es que desaparece una etiqueta de forma aleatoria en la nube, por lo que muestra n-1 etiquetas de entre todas las que tengamos. El otro es quizás el más importante y consiste en que en IE, la nube se ve, pero los enlaces no funcionan: al pinchar en ellos no vamos a ninguna parte.
Si quieres forzar a tus lectores a que se cambien de navegador, no te importa que no funcionen los enlaces porque con el efecto estético tienes bastante, te da igual que de vez en cuando se pierda una etiqueta, tienes más de 25 categorías o simplemente eres algo perezos@, no hace falta que sigas leyendo, porque para solucionar el tema, es necesario colocar los enlaces de manera manual y no se obtienen automáticamente del gadget Blogger para etiquetas, cómo sí ocurría con el código anterior.
Y si sigues por aquí ¡al tajo! El concepto es sencillo, pero cómo decía, da un poco de trabajo. Tenemos que copiar este código y añadirlo cómo nuevo gadget HTML/JavaScript:
<embed quality="high" allowscriptaccess="always" flashvars="tcolor=0x990000&mode=tags&distr=false&tspeed=100&tagcloud=<tags>
<a href='http://NOMBRE_BLOG.blogspot.com/search/label/ETIQUETA' style='12'>ETIQUETA</a>
</tags>" type="application/x-shockwave-flash" height="200" src="http://halotemplates.s3.amazonaws.com/wp-cumulus-example/tagcloud.swf" id="tagcloud" bgcolor="#000000" width="150" name="tagcloud"></embed>
<a href='http://NOMBRE_BLOG.blogspot.com/search/label/ETIQUETA' style='12'>ETIQUETA</a>
</tags>" type="application/x-shockwave-flash" height="200" src="http://halotemplates.s3.amazonaws.com/wp-cumulus-example/tagcloud.swf" id="tagcloud" bgcolor="#000000" width="150" name="tagcloud"></embed>
En lugar de NOMBRE_BLOG, colocamos el nombre de nuestra bitácora para completar correctamente la dirección y en lugar de ETIQUETA se coloca la primera que querais probar (dos veces la misma). Podeis guardar el gadget y comprobar que funciona el enlace en todos los navegadores.
Si es así, ahora es cuando viene el trabajo. A continuación de lo que hemos escrito en gris y con la misma estructura, tenemos que ir añadiendo enlaces al resto de nuestras etiquetas sustituyendo de la misma manera que antes (copy-paste con una y sólo tendrás que cambiar el nombre de las etiquetas):
<embed quality="high" allowscriptaccess="always" flashvars="tcolor=0x990000&mode=tags&distr=false&tspeed=100&tagcloud=<tags>
<a href='http://NOMBRE_BLOG.blogspot.com/search/label/ETIQUETA' style='12'>ETIQUETA</a>
<a href='http://NOMBRE_BLOG.blogspot.com/search/label/ETIQUETA2' style='12'>ETIQUETA2</a>
<a href='http://NOMBRE_BLOG.blogspot.com/search/label/ETIQUETA3' style='12'>ETIQUETA3</a>
</tags>" type="application/x-shockwave-flash" height="200" src="http://halotemplates.s3.amazonaws.com/wp-cumulus-example/tagcloud.swf" id="tagcloud" bgcolor="#000000" width="150" name="tagcloud"></embed>
<a href='http://NOMBRE_BLOG.blogspot.com/search/label/ETIQUETA' style='12'>ETIQUETA</a>
<a href='http://NOMBRE_BLOG.blogspot.com/search/label/ETIQUETA2' style='12'>ETIQUETA2</a>
<a href='http://NOMBRE_BLOG.blogspot.com/search/label/ETIQUETA3' style='12'>ETIQUETA3</a>
</tags>" type="application/x-shockwave-flash" height="200" src="http://halotemplates.s3.amazonaws.com/wp-cumulus-example/tagcloud.swf" id="tagcloud" bgcolor="#000000" width="150" name="tagcloud"></embed>
Elementos que sirven para la configuración:
- tcolor=0x990000: Código hexadecimal del color de las letras (seis últimos dígitos sólo)
- distr=false: Para hacer una distribución uniforme de las etiquetas por el espacio disponible. El valor TRUE hace que se vean más homogéneas, pero es el responsable de que se pierda una etiqueta, tal y como se explicaba al principio. Vosotros elegís si preferís una cosa u otra.
- tspeed=100: El número indica la velocidad a la que se desplazarán los enlaces cuando pasemos el puntero por encima. A mayor número, mayor velocidad. Probad con 1500 y vereis que bien...
- height="200": La altura del contenedor del artilugio
- bgcolor="#000000": El color de fondo en hexadecimal
- width="150": La anchura del contenedor del artilugio
...flashvars="tcolor=0xFF6600&hicolor=0xFFFFFF&mode=tags...
TRUCO: Para conseguir que el fondo sea transparente, integrándose totalmente con el fondo del propio blog, habría que insertar wmode="transparent" como atributo del EMBED, por ejemplo......
</tags>" type="application/x-shockwave-flash" height="200" src="http://halotemplates.s3.amazonaws.com/wp-cumulus-example/tagcloud.swf" id="tagcloud" bgcolor="#000000" wmode="transparent" width="150" name="tagcloud"></embed>
</tags>" type="application/x-shockwave-flash" height="200" src="http://halotemplates.s3.amazonaws.com/wp-cumulus-example/tagcloud.swf" id="tagcloud" bgcolor="#000000" wmode="transparent" width="150" name="tagcloud"></embed>
Actualización Marzo 2010: Este sistema funciona correctamente pero actualmente existen problemas con el fichero tagcloud.swf original, por lo que ha de ser sustituido. Más información en Reparar Blogumus.
Cambiar estilo según el tipo de página
26/11/2009
Esta es la pregunta que nos hizo hace unos días un lector anónimo y la respuesta es que no sólo es posible cambiar el fondo según el tipo de página, sino que también se puede hacer lo mismo para todos los demás atributos que tengan los distintos bloques del blog.
Para ello, sólo hay que echar mano de los condicionales y del tag HTML <style>
Lo que haremos será detectar si estamos en un tipo de página u otro y si es el deseado, forzamos un estilo redactando unos nuevos atributos para el bloque en cuestión.
Cómo es más fácil verlo que explicarlo, supongamos que cómo nos preguntaban, queremos cambiar el fondo de la página cuando estamos en una entrada individual. En primer lugar tenemos que localizar cual es el selector que contiene los atributos que queremos modificar. En este caso, en la parte CSS de nuestra plantilla tenemos entre otras cosas el fondo genérico de la página, que normalmente estará definido en la clase BODY:
Este estilo afectará en principio a todas las páginas, pero como queremos cambiarlo para entradas individuales, nos vamos a la parte HTML y después de <body> (no confundir con el selector BODY que no lleva < >) insertamos todo esto:
De esta manera, al cargarse la página, el estilo será inicialmente el de la hoja de idem, pero si al cargar la parte HTML (lo que hay a partir de <body>) y en virtud de la condición introducida, se detecta que estamos en una página individual (item), se cargarán unos nuevos atributos para el BODY que se superpondrán a los cargados en primer lugar. En este ejemplo, se anulará la imagen y se cargará un color plano de fondo.
De igual manera podemos hacer para cualquier otro selector o para cualquier otro atributo. También podemos vincular el código de estilo, a diferenciar entre entrada individual, página de inicio, páginas de navegación por categorías o incluso en una entrada determinada (ver condicionales):
Este último ejemplo hará que en la entrada con dirección http://oloblogger.blogspot.com/2009/06/videos-aleatorios-bpt.html, cambien los anchos del cuerpo principal y de la barra lateral, así como el fondo y los colores de la fuente.
¿Puede ser que la página principal del blog tenga un background y que cuando se acceda a los posts tenga otro?
Esta es la pregunta que nos hizo hace unos días un lector anónimo y la respuesta es que no sólo es posible cambiar el fondo según el tipo de página, sino que también se puede hacer lo mismo para todos los demás atributos que tengan los distintos bloques del blog.
Para ello, sólo hay que echar mano de los condicionales y del tag HTML <style>
Lo que haremos será detectar si estamos en un tipo de página u otro y si es el deseado, forzamos un estilo redactando unos nuevos atributos para el bloque en cuestión.
Cómo es más fácil verlo que explicarlo, supongamos que cómo nos preguntaban, queremos cambiar el fondo de la página cuando estamos en una entrada individual. En primer lugar tenemos que localizar cual es el selector que contiene los atributos que queremos modificar. En este caso, en la parte CSS de nuestra plantilla tenemos entre otras cosas el fondo genérico de la página, que normalmente estará definido en la clase BODY:
body {
background:url(DIRECCION_IMAGEN);
margin:0 auto;
font-family: 'Comic Sans MS', Trebuchet MS, Tahoma, Arial, Helvetica,sans-serif;
}
background:url(DIRECCION_IMAGEN);
margin:0 auto;
font-family: 'Comic Sans MS', Trebuchet MS, Tahoma, Arial, Helvetica,sans-serif;
}
Este estilo afectará en principio a todas las páginas, pero como queremos cambiarlo para entradas individuales, nos vamos a la parte HTML y después de <body> (no confundir con el selector BODY que no lleva < >) insertamos todo esto:
<b:if cond='data:blog.pageType == "item"'>
<style type='text/css'>
body {background-image:none;background-color:#990000;}
</style>
</b:if>
<style type='text/css'>
body {background-image:none;background-color:#990000;}
</style>
</b:if>
De esta manera, al cargarse la página, el estilo será inicialmente el de la hoja de idem, pero si al cargar la parte HTML (lo que hay a partir de <body>) y en virtud de la condición introducida, se detecta que estamos en una página individual (item), se cargarán unos nuevos atributos para el BODY que se superpondrán a los cargados en primer lugar. En este ejemplo, se anulará la imagen y se cargará un color plano de fondo.
De igual manera podemos hacer para cualquier otro selector o para cualquier otro atributo. También podemos vincular el código de estilo, a diferenciar entre entrada individual, página de inicio, páginas de navegación por categorías o incluso en una entrada determinada (ver condicionales):
<b:if cond='data:blog.url == "http://oloblogger.blogspot.com/2009/06/videos-aleatorios-bpt.html"'>
<style type='text/css'>
#main {width:500px;background:#000000;color:#cccccc;}
#sidebar {width:300px;background:#cccccc;color:#000000;}
</style>
</b:if>
<style type='text/css'>
#main {width:500px;background:#000000;color:#cccccc;}
#sidebar {width:300px;background:#cccccc;color:#000000;}
</style>
</b:if>
Este último ejemplo hará que en la entrada con dirección http://oloblogger.blogspot.com/2009/06/videos-aleatorios-bpt.html, cambien los anchos del cuerpo principal y de la barra lateral, así como el fondo y los colores de la fuente.
Menús, botones, banners y textos con flash
23/11/2009
Para los que gustais de imágenes animadas con efectos "espectaculares" hechos con flash, seguro que esta página también os va a gustar.
En FlashVortex, podeis diseñar una gran variedad de menús, botones, banners, textos, relojes.. sin necesidad siquiera de registro. A cambio, se insertará un enlace a ellos en el gadget que genereis. Para quitar la publi y tener mayores posibilidades con los diseños, ya tendríais que haceros miembros, abonando 30$ para un año, aunque de momento parece que hay suficiente con el servicio gratuito.
Está en inglés pero creo que aunque no se conozca el idioma, resulta bastante fácil construir nuestro cacharrito. Primero seleccionamos el tipo de gadget y luego entre alguna de las plantillas ya creadas. A continuación configuramos los datos (que nos dejen) a nuestro gusto y para terminar le damos a "Generate Animation". Nos sale el código para copiar y pegar, que es válido tanto para entradas como para gadgets. La mayoría incluyen efectos varios al pasar el puntero por encima y los enlaces que creais necesarios.
En FlashVortex, podeis diseñar una gran variedad de menús, botones, banners, textos, relojes.. sin necesidad siquiera de registro. A cambio, se insertará un enlace a ellos en el gadget que genereis. Para quitar la publi y tener mayores posibilidades con los diseños, ya tendríais que haceros miembros, abonando 30$ para un año, aunque de momento parece que hay suficiente con el servicio gratuito.Está en inglés pero creo que aunque no se conozca el idioma, resulta bastante fácil construir nuestro cacharrito. Primero seleccionamos el tipo de gadget y luego entre alguna de las plantillas ya creadas. A continuación configuramos los datos (que nos dejen) a nuestro gusto y para terminar le damos a "Generate Animation". Nos sale el código para copiar y pegar, que es válido tanto para entradas como para gadgets. La mayoría incluyen efectos varios al pasar el puntero por encima y los enlaces que creais necesarios.
Menú de pestañas
21/11/2009
Vamos a explicar cómo hacer un menú que simula unas pestañas móviles. La cosa es mostrar unos enlaces hechos con imágenes, formando una especie de botón y que al pasar el puntero por encima (hover), simulen moverse. El resultado funcionará cómo en este ejemplo:
Estas son las imágenes que hemos utilizado en el ejemplo. Son JPG sin transparencia y por eso le hemos incorporado el color negro en la parte redondeada de abajo, coincidiendo con el color del fondo dónde lo vamos a utilizar. No hay problema en utilizar unos GIF con fondo transparente y de hecho, sería lo recomendable si el fondo de vuestro blog no tiene un color plano sino una imagen. Para el efecto de que la pestaña se "estire" sólo necesitamos que una imagen sea más larga que otra. Con respecto al diseño de las imágenes, ahí es dónde os podeis lucir, porque el resto del menú es bastante fácil de construir.

Lo primero es redactar el estilo de las pestañas en la parte CSS de la plantilla (antes de ]]></b:skin>):
Ahora buscamos el lugar dónde queremos situar el menú y allí escribimos una lista utilizando la clase creada (main-nav) y unos enlaces simples dentro de cada elemento:
Para colocarlo justo después de la cabecera, tal y como se hizo en la plantilla Bloggerbloc (alguien que no recuerdo lo preguntó), esta segunda parte habrá que insertarla debajo del cierre del bloque correspondiente, que normalmente lleva la id='header-wrapper'. Tras el </div> que lleve ese bloque es dónde tenemos que poner nuestra batería de enlaces para este caso.
Las pestañas podeis diseñarlas con los colores y formas que más os gusten. Si cambiais el tamaño, sólo habrá que ajustar los width, height y padding de la parte de estilo. Aunque los bloques son rectángulos, nada impide usar como se ha dicho, un GIF redondo o incluso totalmente irregular. Con hacer transparente la parte que no queremos que se vea, el efecto estará logrado.
Aunque está construido de distinta manera, este sistema ofrece el mismo resultado que las pestañas que podeis ver actualmente arriba a la derecha en este blog a modo de mini-post-it. Para conseguir buenos botones, ahora es sólo cuestión de tener un editor de imágenes, un poco de maña y mucha imaginación.
Estas son las imágenes que hemos utilizado en el ejemplo. Son JPG sin transparencia y por eso le hemos incorporado el color negro en la parte redondeada de abajo, coincidiendo con el color del fondo dónde lo vamos a utilizar. No hay problema en utilizar unos GIF con fondo transparente y de hecho, sería lo recomendable si el fondo de vuestro blog no tiene un color plano sino una imagen. Para el efecto de que la pestaña se "estire" sólo necesitamos que una imagen sea más larga que otra. Con respecto al diseño de las imágenes, ahí es dónde os podeis lucir, porque el resto del menú es bastante fácil de construir.

Lo primero es redactar el estilo de las pestañas en la parte CSS de la plantilla (antes de ]]></b:skin>):
/* Estilo menu pestañas*/
ul#main-nav { /* El bloque general de los enlaces */
margin:0px;
padding:0px;
float:left; /* También podriamos llevarlo a la dcha o incluso centrarlo */
width:100%;
}
ul#main-nav li { /* Cada elemento del menú */
list-style:none;
float:left; /* Cada pestaña se pegará a la anterior, alineadas a la izquierda */
width:100px; /* Ancho de la imagen de fondo que utilicemos */
text-align:center;
}
ul#main-nav li a { /* Cada elemento con enlace del menú */
text-decoration:none;
display:block;
color:#cccccc;
/* Imagen pestaña normal */
background:url(http://4.bp.blogspot.com/_0eC4K-qZ7AM/SqL8lV9KvWI/AAAAAAAAJno/8BKgddxLUR8/s400/pestana1.jpg) no-repeat top left;
height:36px; /* Altura de la imagen más alta */
padding:4px 0px 9px 0px;
}
ul#main-nav li a:hover { /* Cada elemento con enlace pulsado */
color:#ffffff;
font-weight:bold;
/* Imagen pestaña más alta */
background:url(http://2.bp.blogspot.com/_0eC4K-qZ7AM/SqMEpIVMwNI/AAAAAAAAJn4/hlOUaROScxc/s400/pestana2.jpg) no-repeat top left;
/* Redistribuimos el padding vertical (4+9x) para que el texto de la pestaña simule bajar junto con ella */
padding-top:10px;
padding-bottom:3px;
}
ul#main-nav { /* El bloque general de los enlaces */
margin:0px;
padding:0px;
float:left; /* También podriamos llevarlo a la dcha o incluso centrarlo */
width:100%;
}
ul#main-nav li { /* Cada elemento del menú */
list-style:none;
float:left; /* Cada pestaña se pegará a la anterior, alineadas a la izquierda */
width:100px; /* Ancho de la imagen de fondo que utilicemos */
text-align:center;
}
ul#main-nav li a { /* Cada elemento con enlace del menú */
text-decoration:none;
display:block;
color:#cccccc;
/* Imagen pestaña normal */
background:url(http://4.bp.blogspot.com/_0eC4K-qZ7AM/SqL8lV9KvWI/AAAAAAAAJno/8BKgddxLUR8/s400/pestana1.jpg) no-repeat top left;
height:36px; /* Altura de la imagen más alta */
padding:4px 0px 9px 0px;
}
ul#main-nav li a:hover { /* Cada elemento con enlace pulsado */
color:#ffffff;
font-weight:bold;
/* Imagen pestaña más alta */
background:url(http://2.bp.blogspot.com/_0eC4K-qZ7AM/SqMEpIVMwNI/AAAAAAAAJn4/hlOUaROScxc/s400/pestana2.jpg) no-repeat top left;
/* Redistribuimos el padding vertical (4+9x) para que el texto de la pestaña simule bajar junto con ella */
padding-top:10px;
padding-bottom:3px;
}
Ahora buscamos el lugar dónde queremos situar el menú y allí escribimos una lista utilizando la clase creada (main-nav) y unos enlaces simples dentro de cada elemento:
<!-- MENU -->
<ul id='main-nav'>
<li><a href='URL_ENLACE1'>ENLACE1</a></li>
<li><a href='URL_ENLACE2'>ENLACE2</a></li>
<li><a href='URL_ENLACE3'>ENLACE3</a></li>
</ul>
<ul id='main-nav'>
<li><a href='URL_ENLACE1'>ENLACE1</a></li>
<li><a href='URL_ENLACE2'>ENLACE2</a></li>
<li><a href='URL_ENLACE3'>ENLACE3</a></li>
</ul>
Para colocarlo justo después de la cabecera, tal y como se hizo en la plantilla Bloggerbloc (alguien que no recuerdo lo preguntó), esta segunda parte habrá que insertarla debajo del cierre del bloque correspondiente, que normalmente lleva la id='header-wrapper'. Tras el </div> que lleve ese bloque es dónde tenemos que poner nuestra batería de enlaces para este caso.
Las pestañas podeis diseñarlas con los colores y formas que más os gusten. Si cambiais el tamaño, sólo habrá que ajustar los width, height y padding de la parte de estilo. Aunque los bloques son rectángulos, nada impide usar como se ha dicho, un GIF redondo o incluso totalmente irregular. Con hacer transparente la parte que no queremos que se vea, el efecto estará logrado.
Aunque está construido de distinta manera, este sistema ofrece el mismo resultado que las pestañas que podeis ver actualmente arriba a la derecha en este blog a modo de mini-post-it. Para conseguir buenos botones, ahora es sólo cuestión de tener un editor de imágenes, un poco de maña y mucha imaginación.
Indice por categorías (tipo sitemap)
18/11/2009
El soplo de este script nos llega gracias a Malina y a través de la lista de correo de Uniblog. En este caso y a diferencia del sistema que vimos hace un par de días, con este se verán TODAS las entradas de una sola vez, pero separadas por sus respectivas categorías. El autor es Abu Farhan y en su blog podeis ver el artículo original.
El aspecto será muy parecido al de un "mapa del sitio" (sitemap) o "mapa de la web". Vereis que se trata de una forma de mostrar las entradas clasificadas según sus etiquetas, bastante distinta. El mapa se tiene que mostrar necesariamente en una entrada, a modo de página independiente. Aquí podeis ver un ejemplo hecho en una página estática.
Entre los dos sistemas, podeis elegir el que más os convenga.

En este caso, la instalación es bien sencilla. Primero se crea un post y se le coloca una fecha atrasada (más antigua que el post más antiguo que tengamos publicado). Directamente en ese post, colocamos...
Sustituimos NOMBRE_BLOG por el nombre de nuestro blog, guardamos y si vemos la entrada, ya comprobaremos que tenemos nuestro pseudo-sitemap.
Ahora sólo nos resta hacer un enlace en la barra lateral que lleve a esa página, con un nombre significativo: mapa, sitemap, índice, contenidos... para que nuestros lectores puedan saber que existe y acceder a él.
#BPT on
Para hacer el enlace, nos vamos a Elementos de página > Añadir gadget > HTML/JavaScript y en la ventana emergente que sale copiamos esta estructura:
Cambiamos URL_PAGINA_INDICE por la dirección que tenga la entrada que hemos creado según se explicó al principio.
Guardar.
#BPT off
El script incluye un gráfico con la palabra New!! que automáticamente se incorpora a los posts más recientes.
Igual que con el otro sistema, si teneis muchas entradas, la carga de vuestra página se ralentizará. Pero en esta ocasión sólo afectará a la página dónde se incorpore el índice, no a todas las páginas cómo sí ocurría con el anterior.
Si lo preferís, podeis alojar vosotros mismos el script original para no depender del hosting actual. En ese caso, habrá que cambiar la dirección http://www.abu-farhan.com/script/daftarisiblogger/blogtoc-min.js del código por la vuestra.
Como tercera opción, podeis copiar este texto e incorporarlo directamente en vuestra plantilla, antes del </head>. Si lo haceis de esta última manera, la primera de las dos líneas a introducir en la entrada no será necesaria.
El aspecto será muy parecido al de un "mapa del sitio" (sitemap) o "mapa de la web". Vereis que se trata de una forma de mostrar las entradas clasificadas según sus etiquetas, bastante distinta. El mapa se tiene que mostrar necesariamente en una entrada, a modo de página independiente. Aquí podeis ver un ejemplo hecho en una página estática.
Entre los dos sistemas, podeis elegir el que más os convenga.

En este caso, la instalación es bien sencilla. Primero se crea un post y se le coloca una fecha atrasada (más antigua que el post más antiguo que tengamos publicado). Directamente en ese post, colocamos...
<script style="text/javascript" src="http://www.abu-farhan.com/script/daftarisiblogger/blogtoc-min.js"></script>
<script src="http://NOMBRE_BLOG.blogspot.com/feeds/posts/default?max-results=9999&alt=json-in-script&callback=loadtoc"></script>
<script src="http://NOMBRE_BLOG.blogspot.com/feeds/posts/default?max-results=9999&alt=json-in-script&callback=loadtoc"></script>
Sustituimos NOMBRE_BLOG por el nombre de nuestro blog, guardamos y si vemos la entrada, ya comprobaremos que tenemos nuestro pseudo-sitemap.
Ahora sólo nos resta hacer un enlace en la barra lateral que lleve a esa página, con un nombre significativo: mapa, sitemap, índice, contenidos... para que nuestros lectores puedan saber que existe y acceder a él.
#BPT on
Para hacer el enlace, nos vamos a Elementos de página > Añadir gadget > HTML/JavaScript y en la ventana emergente que sale copiamos esta estructura:
<a href="URL_PAGINA_INDICE">Indice</a>
Cambiamos URL_PAGINA_INDICE por la dirección que tenga la entrada que hemos creado según se explicó al principio.
Guardar.
#BPT off
El script incluye un gráfico con la palabra New!! que automáticamente se incorpora a los posts más recientes.
Igual que con el otro sistema, si teneis muchas entradas, la carga de vuestra página se ralentizará. Pero en esta ocasión sólo afectará a la página dónde se incorpore el índice, no a todas las páginas cómo sí ocurría con el anterior.
Si lo preferís, podeis alojar vosotros mismos el script original para no depender del hosting actual. En ese caso, habrá que cambiar la dirección http://www.abu-farhan.com/script/daftarisiblogger/blogtoc-min.js del código por la vuestra.
Como tercera opción, podeis copiar este texto e incorporarlo directamente en vuestra plantilla, antes del </head>. Si lo haceis de esta última manera, la primera de las dos líneas a introducir en la entrada no será necesaria.
Indice por categorías
16/11/2009
Hace tiempo, Beatiful Beta nos obsequió con un script que permitía mostrar todas nuestras entradas en una tabla, a modo de índice. Un ejemplo de cómo funciona lo teneis actualmente en este mismo blog, pinchando en la etiqueta correspondiente de la parte superior.
Tras unas pequeñas modificaciones, hemos logrado que ese mismo script sirva para mostrar un índice pero por categorías. La cosa funciona así: pinchando en una etiqueta de nuestro gadget de idems, se verá en la parte superior del blog una tabla con todas las entradas de esa etiqueta por orden alfabético. Posteriormente podemos ir seleccionando otra etiqueta para ver su contenido o cerrar la tabla para seguir haciendo otra cosa. Los títulos de la tabla permiten ordenar las entradas mostradas por fecha o, como se ha dicho, alfabéticamente. Una demo de cómo quedaría el sistema.

¿Cómo hacer esto? En cinco minutos siguiendo estos pasos...
1. Creamos en nuestra barra lateral un nuevo gadget Etiquetas. Le ponemos de título Indice por categorías y por el momento lo dejamos tipo Lista. Da igual si ya tenemos uno. Si es así, este pasará a tener la ID Label2.
2. Ahora vamos a Edición HTML y seleccionamos Expandir plantillas de artilugios. Como no queremos depender de servicios externos, que cualquier día nos dejan colgados, copiamos el siguiente código [+/-] delante del </head> Es largo, pero sólo se trata de copiar y pegar. Tranqui. He aprovechado para traducir los mensajes y que salgan en cristiano (...no Ronaldo).
3. Bajamos en el código de nuestra plantilla buscando el gadget creado en primer lugar. Podemos hacerlo mediante el título (Indice - categorías) o por su ID (label1, label2...). Una vez localizado, tendremos algo así:
Ahí podeis ver insertado en verde lo que hay que incorporar, en lugar precisamente de la línea que se muestra tachada. Una vez hecho, se salvan los cambios con Guardar.
4. Ya sólo nos falta generar una llamada al script pasando por nuestro feed, el DIV de la tabla propiamente dicha (llamado TOC) y un enlace para poderla cerrar cuando estorbe. Eso es añadiendo un nuevo gadget HTML/JavaScript con el siguiente código:
Antes de guardar, cambiamos NOMBRE_BLOG por el propio. La parte en gris es opcional y obligatoria sólo para blogs con más de 500 entradas y si se quieren mostrar todas. Si se tienen más de 1000, habrá que añadir otra línea con la misma estructura pero partiendo del último número de la anterior: 1001-1500, 1501-2000, etc. Aunque quizás lo mejor si tienes tantas entradas es que instales este último gadget no como idem sino insertando el código directamente en una entrada (en este caso, todo seguido, sin saltos de línea). De lo contrario podría demorar mucho la carga de la página ya que la primera tarea que realiza el script es precisamente cargar todos los datos de todas las entradas.
Guardamos y ya sólo nos queda trasladar el gadget justo encima de las entradas que parece el sitio más adecuado para mostrar la tabla. Si lo quereis en otro sitio, pues dónde os parezca.
Como cada cual tiene unos colores y unos anchos de columnas distintos, desde la parte Estilo índice categorías, podeis configurar esos atributos modificándolos al gusto.
Reto dedicado a ProyectoZX ;)
Tras unas pequeñas modificaciones, hemos logrado que ese mismo script sirva para mostrar un índice pero por categorías. La cosa funciona así: pinchando en una etiqueta de nuestro gadget de idems, se verá en la parte superior del blog una tabla con todas las entradas de esa etiqueta por orden alfabético. Posteriormente podemos ir seleccionando otra etiqueta para ver su contenido o cerrar la tabla para seguir haciendo otra cosa. Los títulos de la tabla permiten ordenar las entradas mostradas por fecha o, como se ha dicho, alfabéticamente. Una demo de cómo quedaría el sistema.

¿Cómo hacer esto? En cinco minutos siguiendo estos pasos...
1. Creamos en nuestra barra lateral un nuevo gadget Etiquetas. Le ponemos de título Indice por categorías y por el momento lo dejamos tipo Lista. Da igual si ya tenemos uno. Si es así, este pasará a tener la ID Label2.
2. Ahora vamos a Edición HTML y seleccionamos Expandir plantillas de artilugios. Como no queremos depender de servicios externos, que cualquier día nos dejan colgados, copiamos el siguiente código [+/-] delante del </head> Es largo, pero sólo se trata de copiar y pegar. Tranqui. He aprovechado para traducir los mensajes y que salgan en cristiano (...no Ronaldo).
<!-- Estilo indice categorías -->
<style type='text/css'>
#toc {border: 0px solid #990000; background:none; padding: 5px; width:400px; margin:9px auto; text-align:center;}
.toc-header-col1, .toc-header-col2 { background:#ffffff; color:#000000; width:300px; text-align:left; font-size:12px;}
.toc-header-col2 { width:100px;}
.toc-header-col1 a, .toc-header-col1 a:visited, .toc-header-col2 a, .toc-header-col2 a:visited { text-decoration:none; color:#000000; background:none !important;}
.toc-header-col1 a:hover, .toc-header-col2 a:hover, .toc-header-col3 a:hover { text-decoration:underline; color:#000000; background:none !important;}
.toc-entry-col1, .toc-entry-col2 { padding-left: 5px; text-align:left; color:#333333; font-size:12px; background:#E2E2BB;}
.toc-entry-col1 a, .toc-entry-col2 a { background:none !important; color:#990000 !important;}
.toc-entry-col1 a:hover, .toc-entry-col2 a:hover { text-decoration:underline !important;}
.toc-entry-col1 a:visited, .toc-entry-col2 a:visited { color:#666666 !important; padding-left: 10px; background:none !important;}
</style>
<!-- Script indice categorías -->
<script type='text/javascript'>
//<![CDATA[
// ---------------------------------------------------
// BLOGTOC
// ---------------------------------------------------
// Author: Beautiful Beta
// Url: http://beautifulbeta.blogspot.com
// Adaptación para etiquetas: Oloblogger
// ---------------------------------------------------
var postTitle = new Array(); // array de títulos
var postUrl = new Array(); // array de url's
var postDate = new Array(); // array de datos de publicación
var postLabels = new Array(); // array de etiquetas
var sortBy = "titleasc"; // valor por defecto para ordenar
var tocLoaded = false; // true una vez que el feed ha sido leído
var postFilter = ""; // valor por defecto del filtro
function loadtoc(json) {
function getPostData() {
// Esta función lee todos los datos de los posts y los guarda en una matriz
if ("entry" in json.feed) {
var numEntries = json.feed.entry.length;
for (var i = 0; i < numEntries; i++) {
var entry = json.feed.entry[i];
var posttitle = entry.title.$t;
var postdate = entry.published.$t.substring(0,10);
var posturl;
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
posturl = entry.link[k].href;
break;
}
}
var pll = '';
if ("category" in entry) {
for (var k = 0; k < entry.category.length; k++) {
pll += '<a href="javascript:filterPosts(\'' + entry.category[k].term + '\')" title="Click para seleccionar todos los posts con etiqueta \'' + entry.category[k].term + '\'">' + entry.category[k].term + '</a>, ';
}
var l = pll.lastIndexOf(';');
if (l != -1) { pll = pll.substring(0,l); }
}
postTitle.push(posttitle);
postDate.push(postdate);
postUrl.push(posturl);
postLabels.push(pll);
}
}
} // Fin getPostData
numEntries = json.feed.entry.length;
getPostData();
sortPosts(sortBy);
tocLoaded = true;
}
// Funciones filtro y orden
function filterPosts(filter) {
scroll(0,0);
postFilter = "";
displayToc(postFilter);
}
function allPosts() {
postFilter = '';
displayToc(postFilter);
}
function sortPosts(sortBy) {
function swapPosts(x,y) {
var temp = postTitle[x];
postTitle[x] = postTitle[y];
postTitle[y] = temp;
var temp = postDate[x];
postDate[x] = postDate[y];
postDate[y] = temp;
var temp = postUrl[x];
postUrl[x] = postUrl[y];
postUrl[y] = temp;
var temp = postLabels[x];
postLabels[x] = postLabels[y];
postLabels[y] = temp;
}
for (var i=0; i < postTitle.length-1; i++) {
for (var j=i+1; j<postTitle.length; j++) {
if (sortBy == "titleasc") { if (postTitle[i] > postTitle[j]) { swapPosts(i,j); } }
if (sortBy == "titledesc") { if (postTitle[i] < postTitle[j]) { swapPosts(i,j); } }
if (sortBy == "dateoldest") { if (postDate[i] > postDate[j]) { swapPosts(i,j); } }
if (sortBy == "datenewest") { if (postDate[i] < postDate[j]) { swapPosts(i,j); } }
}
}
}
// Mostrando la tabla
function displayToc(filter) {
var numDisplayed = 0;
var tocTable = '';
var tocHead1 = 'TITULO DEL POST';
var tocTool1 = 'Click para ordenar por título';
var tocHead2 = 'FECHA';
var tocTool2 = 'Click para ordenar por fecha';
if (sortBy == "titleasc") {
tocTool1 += ' (Descendente)';
tocTool2 += ' (Más nuevo primero)';
}
if (sortBy == "titledesc") {
tocTool1 += ' (Ascendente)';
tocTool2 += ' (Más nuevo primero)';
}
if (sortBy == "dateoldest") {
tocTool1 += ' (Ascendente)';
tocTool2 += ' (Más nuevo primero)';
}
if (sortBy == "datenewest") {
tocTool1 += ' (Ascendente)';
tocTool2 += ' (Más viejo primero)';
}
tocTable += '<table>';
tocTable += '<tr>';
tocTable += '<td class="toc-header-col1">';
tocTable += '<a href="javascript:toggleTitleSort();" title="' + tocTool1 + '">' + tocHead1 + '</a>';
tocTable += '</td>';
tocTable += '<td class="toc-header-col2">';
tocTable += '<a href="javascript:toggleDateSort();" title="' + tocTool2 + '">' + tocHead2 + '</a>';
tocTable += '</td>';
tocTable += '</tr>';
for (var i = 0; i < postTitle.length; i++) {
if (filter == '') {
tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td></tr>';
numDisplayed++;
} else {
z = postLabels[i].lastIndexOf(filter);
if ( z!= -1) {
tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td></tr>';
numDisplayed++;
}
}
}
tocTable += '</table>';
if (numDisplayed == postTitle.length) {
var tocNote = '<span class="toc-note">Mostrando todos los ' + postTitle.length + ' posts<br/></span>'; }
else {
var tocNote = '<span class="toc-note">Mostrando ' + numDisplayed + ' posts con etiqueta \'';
tocNote += postFilter + '\' de '+ postTitle.length + ' posts en total<br/></span>';
}
var tocdiv = document.getElementById("toc");
tocdiv.innerHTML = tocNote + tocTable;
}
function toggleTitleSort() {
if (sortBy == "titleasc") { sortBy = "titledesc"; }
else { sortBy = "titleasc"; }
sortPosts(sortBy);
displayToc(postFilter);
}
function toggleDateSort() {
if (sortBy == "datenewest") { sortBy = "dateoldest"; }
else { sortBy = "datenewest"; }
sortPosts(sortBy);
displayToc(postFilter);
}
// Función principal y enlace para plegar
function showToc(etiqueta) {
postFilter = etiqueta;
if (tocLoaded) {
displayToc(postFilter);
var toclink = document.getElementById('toclink');
toclink.innerHTML = '<a href="javascript:hideToc();">» Ocultar tabla</a><br/><br/>';
}
else { alert("Espere. Todavía cargando su feed"); }
}
function hideToc() {
var toclink = document.getElementById('toclink');
toclink.innerHTML = '';
var tocdiv = document.getElementById('toc');
tocdiv.innerHTML = '';
}
//]]>
</script>
<style type='text/css'>
#toc {border: 0px solid #990000; background:none; padding: 5px; width:400px; margin:9px auto; text-align:center;}
.toc-header-col1, .toc-header-col2 { background:#ffffff; color:#000000; width:300px; text-align:left; font-size:12px;}
.toc-header-col2 { width:100px;}
.toc-header-col1 a, .toc-header-col1 a:visited, .toc-header-col2 a, .toc-header-col2 a:visited { text-decoration:none; color:#000000; background:none !important;}
.toc-header-col1 a:hover, .toc-header-col2 a:hover, .toc-header-col3 a:hover { text-decoration:underline; color:#000000; background:none !important;}
.toc-entry-col1, .toc-entry-col2 { padding-left: 5px; text-align:left; color:#333333; font-size:12px; background:#E2E2BB;}
.toc-entry-col1 a, .toc-entry-col2 a { background:none !important; color:#990000 !important;}
.toc-entry-col1 a:hover, .toc-entry-col2 a:hover { text-decoration:underline !important;}
.toc-entry-col1 a:visited, .toc-entry-col2 a:visited { color:#666666 !important; padding-left: 10px; background:none !important;}
</style>
<!-- Script indice categorías -->
<script type='text/javascript'>
//<![CDATA[
// ---------------------------------------------------
// BLOGTOC
// ---------------------------------------------------
// Author: Beautiful Beta
// Url: http://beautifulbeta.blogspot.com
// Adaptación para etiquetas: Oloblogger
// ---------------------------------------------------
var postTitle = new Array(); // array de títulos
var postUrl = new Array(); // array de url's
var postDate = new Array(); // array de datos de publicación
var postLabels = new Array(); // array de etiquetas
var sortBy = "titleasc"; // valor por defecto para ordenar
var tocLoaded = false; // true una vez que el feed ha sido leído
var postFilter = ""; // valor por defecto del filtro
function loadtoc(json) {
function getPostData() {
// Esta función lee todos los datos de los posts y los guarda en una matriz
if ("entry" in json.feed) {
var numEntries = json.feed.entry.length;
for (var i = 0; i < numEntries; i++) {
var entry = json.feed.entry[i];
var posttitle = entry.title.$t;
var postdate = entry.published.$t.substring(0,10);
var posturl;
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
posturl = entry.link[k].href;
break;
}
}
var pll = '';
if ("category" in entry) {
for (var k = 0; k < entry.category.length; k++) {
pll += '<a href="javascript:filterPosts(\'' + entry.category[k].term + '\')" title="Click para seleccionar todos los posts con etiqueta \'' + entry.category[k].term + '\'">' + entry.category[k].term + '</a>, ';
}
var l = pll.lastIndexOf(';');
if (l != -1) { pll = pll.substring(0,l); }
}
postTitle.push(posttitle);
postDate.push(postdate);
postUrl.push(posturl);
postLabels.push(pll);
}
}
} // Fin getPostData
numEntries = json.feed.entry.length;
getPostData();
sortPosts(sortBy);
tocLoaded = true;
}
// Funciones filtro y orden
function filterPosts(filter) {
scroll(0,0);
postFilter = "";
displayToc(postFilter);
}
function allPosts() {
postFilter = '';
displayToc(postFilter);
}
function sortPosts(sortBy) {
function swapPosts(x,y) {
var temp = postTitle[x];
postTitle[x] = postTitle[y];
postTitle[y] = temp;
var temp = postDate[x];
postDate[x] = postDate[y];
postDate[y] = temp;
var temp = postUrl[x];
postUrl[x] = postUrl[y];
postUrl[y] = temp;
var temp = postLabels[x];
postLabels[x] = postLabels[y];
postLabels[y] = temp;
}
for (var i=0; i < postTitle.length-1; i++) {
for (var j=i+1; j<postTitle.length; j++) {
if (sortBy == "titleasc") { if (postTitle[i] > postTitle[j]) { swapPosts(i,j); } }
if (sortBy == "titledesc") { if (postTitle[i] < postTitle[j]) { swapPosts(i,j); } }
if (sortBy == "dateoldest") { if (postDate[i] > postDate[j]) { swapPosts(i,j); } }
if (sortBy == "datenewest") { if (postDate[i] < postDate[j]) { swapPosts(i,j); } }
}
}
}
// Mostrando la tabla
function displayToc(filter) {
var numDisplayed = 0;
var tocTable = '';
var tocHead1 = 'TITULO DEL POST';
var tocTool1 = 'Click para ordenar por título';
var tocHead2 = 'FECHA';
var tocTool2 = 'Click para ordenar por fecha';
if (sortBy == "titleasc") {
tocTool1 += ' (Descendente)';
tocTool2 += ' (Más nuevo primero)';
}
if (sortBy == "titledesc") {
tocTool1 += ' (Ascendente)';
tocTool2 += ' (Más nuevo primero)';
}
if (sortBy == "dateoldest") {
tocTool1 += ' (Ascendente)';
tocTool2 += ' (Más nuevo primero)';
}
if (sortBy == "datenewest") {
tocTool1 += ' (Ascendente)';
tocTool2 += ' (Más viejo primero)';
}
tocTable += '<table>';
tocTable += '<tr>';
tocTable += '<td class="toc-header-col1">';
tocTable += '<a href="javascript:toggleTitleSort();" title="' + tocTool1 + '">' + tocHead1 + '</a>';
tocTable += '</td>';
tocTable += '<td class="toc-header-col2">';
tocTable += '<a href="javascript:toggleDateSort();" title="' + tocTool2 + '">' + tocHead2 + '</a>';
tocTable += '</td>';
tocTable += '</tr>';
for (var i = 0; i < postTitle.length; i++) {
if (filter == '') {
tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td></tr>';
numDisplayed++;
} else {
z = postLabels[i].lastIndexOf(filter);
if ( z!= -1) {
tocTable += '<tr><td class="toc-entry-col1"><a href="' + postUrl[i] + '">' + postTitle[i] + '</a></td><td class="toc-entry-col2">' + postDate[i] + '</td></tr>';
numDisplayed++;
}
}
}
tocTable += '</table>';
if (numDisplayed == postTitle.length) {
var tocNote = '<span class="toc-note">Mostrando todos los ' + postTitle.length + ' posts<br/></span>'; }
else {
var tocNote = '<span class="toc-note">Mostrando ' + numDisplayed + ' posts con etiqueta \'';
tocNote += postFilter + '\' de '+ postTitle.length + ' posts en total<br/></span>';
}
var tocdiv = document.getElementById("toc");
tocdiv.innerHTML = tocNote + tocTable;
}
function toggleTitleSort() {
if (sortBy == "titleasc") { sortBy = "titledesc"; }
else { sortBy = "titleasc"; }
sortPosts(sortBy);
displayToc(postFilter);
}
function toggleDateSort() {
if (sortBy == "datenewest") { sortBy = "dateoldest"; }
else { sortBy = "datenewest"; }
sortPosts(sortBy);
displayToc(postFilter);
}
// Función principal y enlace para plegar
function showToc(etiqueta) {
postFilter = etiqueta;
if (tocLoaded) {
displayToc(postFilter);
var toclink = document.getElementById('toclink');
toclink.innerHTML = '<a href="javascript:hideToc();">» Ocultar tabla</a><br/><br/>';
}
else { alert("Espere. Todavía cargando su feed"); }
}
function hideToc() {
var toclink = document.getElementById('toclink');
toclink.innerHTML = '';
var tocdiv = document.getElementById('toc');
tocdiv.innerHTML = '';
}
//]]>
</script>
3. Bajamos en el código de nuestra plantilla buscando el gadget creado en primer lugar. Podemos hacerlo mediante el título (Indice - categorías) o por su ID (label1, label2...). Una vez localizado, tendremos algo así:
<b:widget id='Label1' locked='false' title='Etiquetas' type='Label'>
<b:includable id='main'>
<b:if cond='data:title'>
<h2><data:title/></h2>
</b:if>
<div expr:class='"widget-content " + data:display + "-label-widget-content"'>
<b:if cond='data:display == "list"'>
<ul>
<b:loop values='data:labels' var='label'>
<li>
<b:if cond='data:blog.url == data:label.url'>
<span expr:dir='data:blog.languageDirection'><data:label.name/></span>
<b:else/>
<a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>
<a expr:dir='data:blog.languageDirection' expr:href='"javascript:showToc(\"" + data:label.name + "\");"' expr:title='"Ver todos los posts etiquetados como " + data:label.name'><data:label.name/></a>
</b:if>
<b:if cond='data:showFreqNumbers'>
<span dir='ltr'>(<data:label.count/>)</span>
</b:if>
</li>
</b:loop>
</ul>
<b:else/>;
<b:includable id='main'>
<b:if cond='data:title'>
<h2><data:title/></h2>
</b:if>
<div expr:class='"widget-content " + data:display + "-label-widget-content"'>
<b:if cond='data:display == "list"'>
<ul>
<b:loop values='data:labels' var='label'>
<li>
<b:if cond='data:blog.url == data:label.url'>
<span expr:dir='data:blog.languageDirection'><data:label.name/></span>
<b:else/>
<a expr:dir='data:blog.languageDirection' expr:href='"javascript:showToc(\"" + data:label.name + "\");"' expr:title='"Ver todos los posts etiquetados como " + data:label.name'><data:label.name/></a>
</b:if>
<b:if cond='data:showFreqNumbers'>
<span dir='ltr'>(<data:label.count/>)</span>
</b:if>
</li>
</b:loop>
</ul>
<b:else/>;
Ahí podeis ver insertado en verde lo que hay que incorporar, en lugar precisamente de la línea que se muestra tachada. Una vez hecho, se salvan los cambios con Guardar.
4. Ya sólo nos falta generar una llamada al script pasando por nuestro feed, el DIV de la tabla propiamente dicha (llamado TOC) y un enlace para poderla cerrar cuando estorbe. Eso es añadiendo un nuevo gadget HTML/JavaScript con el siguiente código:
<script src="http://NOMBRE_BLOG.blogspot.com/feeds/posts/default?alt=json-in-script&start-index=1&max-results=500&callback=loadtoc"></script>
<script src="http://NOMBRE_BLOG.blogspot.com/feeds/posts/default?alt=json-in-script&start-index=501&max-results=1000&callback=loadtoc"></script>
<div id="toclink"></div>
<table align="center"><tbody><tr style="margin: 0px auto; text-align: center;"><td><div id="toc"></div></td></tr></tbody></table>
<script src="http://NOMBRE_BLOG.blogspot.com/feeds/posts/default?alt=json-in-script&start-index=501&max-results=1000&callback=loadtoc"></script>
<div id="toclink"></div>
<table align="center"><tbody><tr style="margin: 0px auto; text-align: center;"><td><div id="toc"></div></td></tr></tbody></table>
Antes de guardar, cambiamos NOMBRE_BLOG por el propio. La parte en gris es opcional y obligatoria sólo para blogs con más de 500 entradas y si se quieren mostrar todas. Si se tienen más de 1000, habrá que añadir otra línea con la misma estructura pero partiendo del último número de la anterior: 1001-1500, 1501-2000, etc. Aunque quizás lo mejor si tienes tantas entradas es que instales este último gadget no como idem sino insertando el código directamente en una entrada (en este caso, todo seguido, sin saltos de línea). De lo contrario podría demorar mucho la carga de la página ya que la primera tarea que realiza el script es precisamente cargar todos los datos de todas las entradas.
Guardamos y ya sólo nos queda trasladar el gadget justo encima de las entradas que parece el sitio más adecuado para mostrar la tabla. Si lo quereis en otro sitio, pues dónde os parezca.
Como cada cual tiene unos colores y unos anchos de columnas distintos, desde la parte Estilo índice categorías, podeis configurar esos atributos modificándolos al gusto.
Reto dedicado a ProyectoZX ;)
Entradas relacionadas con miniaturas
12/11/2009
Ahora que se está poniendo de moda el gadget de Linkwithin, he recordado que vi en Agosto un script de Blogger Widgets, que basado en la idea de las clásicas entradas relacionadas mediante enlaces de texto, desarrollaba un poco más la cosa incluyendo una imagen en miniatura. Como lo del Linkwithin es poco configurable por no decir nada y cualquier día lo hacen de pago o nos meten algo que no nos guste, más vale estar preparados con un sistema alternativo que bien podría ser este y que salvo por su rendimiento, es prácticamente igual que el otro.

La relación de estas entradas con la del post dónde se muestra, no está tan lograda como con Linkwithin. Esto es porque este sistema se guía exclusivamente de las etiquetas para encontrar las similitudes. Pero bueno, cumple bastante bien su función de ofrecer entradas relacionadas y, como se ha dicho, puede servir de alternativa.
Para instalarlo sin depender de scripts en alojamientos externos, he incluido el susodicho de manera que quedará en nuestra plantilla. Comenzamos en Diseño > Edición de HTML y pinchamos en "Expandir plantillas de artilugios". Localizamos el </head> y justo antes copiamos el script y el código para configuración CSS, que por su extensión, ocultamos pero dejamos disponible pinchando aquí.
Una vez hecho esto, seguimos hacia abajo y buscamos el lugar dónde queremos que aparezcan los enlaces. Allí pondremos el siguiente código. Lo normal será que lo pongamos en el pie del post (post-footer) y si tenemos plantillas clásicas, dentro de post-footer post-footer-line-3. Si tenemos ya algo metido ahí, pues lo colocamos a continuación para que esto salga lo último.
Si guardamos, ya tendremos disponible nuestro nuevo artilugio. No podremos apreciar los cambios con Vista Previa, porque tanto en el script como en la parte HTML, se ha incluido una condición para que sólo sea visible en las entradas individuales (item). Habrá que acceder a una entrada cualquiera para poder verlo en funcionamiento.
En esta última parte de código, var maxresults sirve para indicar el número de entradas relacionadas que queremos mostrar y var relatedpoststitle, para el texto que queremos mostrar delante de ellas. Las características de fuente, fondo y efecto hover, se puede configurar desde la primera parte del primer código facilitado aquí.

La relación de estas entradas con la del post dónde se muestra, no está tan lograda como con Linkwithin. Esto es porque este sistema se guía exclusivamente de las etiquetas para encontrar las similitudes. Pero bueno, cumple bastante bien su función de ofrecer entradas relacionadas y, como se ha dicho, puede servir de alternativa.
Para instalarlo sin depender de scripts en alojamientos externos, he incluido el susodicho de manera que quedará en nuestra plantilla. Comenzamos en Diseño > Edición de HTML y pinchamos en "Expandir plantillas de artilugios". Localizamos el </head> y justo antes copiamos el script y el código para configuración CSS, que por su extensión, ocultamos pero dejamos disponible pinchando aquí.
<!-- Entradas relacionadas con miniatura. Script y Estilo -->
<b:if cond='data:blog.pageType == "item"'>
<style type='text/css'>
#related-posts {
float:center;
text-transform:none;
height:100%;
min-height:100%;
padding-top:5px;
padding-left:5px;
}
#related-posts h2{
font-size: 1.6em;
font-weight: bold;
color: black;
font-family: Georgia, “Times New Roman”, Times, serif;
margin-bottom: 0.75em;
margin-top: 0em;
padding-top: 0em;
}
#related-posts a{
color:black;
}
#related-posts a:hover{
color:black;
}
#related-posts a:hover {
background-color:#d4eaf2;
}
</style>
<script type='text/javascript'>
//<![CDATA[
//Script by Aneesh of www.bloggerplugins.org
//Released on August 19th August 2009
var relatedTitles = new Array();
var relatedTitlesNum = 0;
var relatedUrls = new Array();
var thumburl = new Array();
function related_results_labels_thumbs(json) {
for (var i = 0; i < json.feed.entry.length; i++) {
var entry = json.feed.entry[i];
relatedTitles[relatedTitlesNum] = entry.title.$t;
try
{thumburl[relatedTitlesNum]=entry.media$thumbnail.url;}
catch (error){
s=entry.content.$t;a=s.indexOf("<img");b=s.indexOf("src=\"",a);c=s.indexOf("\"",b+5);d=s.substr(b+5,c-b-5);if((a!=-1)&&(b!=-1)&&(c!=-1)&&(d!="")){
thumburl[relatedTitlesNum]=d;} else thumburl[relatedTitlesNum]='http://1.bp.blogspot.com/_u4gySN2ZgqE/SosvnavWq0I/AAAAAAAAArk/yL95WlyTqr0/s400/noimage.png';
}
if(relatedTitles[relatedTitlesNum].length>35) relatedTitles[relatedTitlesNum]=relatedTitles[relatedTitlesNum].substring(0, 35)+"...";
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
relatedUrls[relatedTitlesNum] = entry.link[k].href;
relatedTitlesNum++;
}}}}
function removeRelatedDuplicates_thumbs() {
var tmp = new Array(0);
var tmp2 = new Array(0);
var tmp3 = new Array(0);
for(var i = 0; i < relatedUrls.length; i++) {
if(!contains_thumbs(tmp, relatedUrls[i])) {
tmp.length += 1;
tmp[tmp.length - 1] = relatedUrls[i];
tmp2.length += 1;
tmp3.length += 1;
tmp2[tmp2.length - 1] = relatedTitles[i];
tmp3[tmp3.length - 1] = thumburl[i];
}}
relatedTitles = tmp2;
relatedUrls = tmp;
thumburl=tmp3;
}
function contains_thumbs(a, e) {
for(var j = 0; j < a.length; j++) if (a[j]==e) return true;
return false;
}
function printRelatedLabels_thumbs() {
for(var i = 0; i < relatedUrls.length; i++)
{
if((relatedUrls[i]==currentposturl)||(!(relatedTitles[i]))) {
relatedUrls.splice(i,1);
relatedTitles.splice(i,1);
thumburl.splice(i,1);
}}
var r = Math.floor((relatedTitles.length - 1) * Math.random());
var i = 0;
if(relatedTitles.length>0) document.write('<h2>'+relatedpoststitle+'</h2>');
document.write('<div style="clear: both;"/>');
while (i < relatedTitles.length && i < 20 && i<maxresults) {
document.write('<a style="text-decoration:none;padding:5px;float:left;');
if(i!=0) document.write('border-left:solid 0.5px #d4eaf2;"');
else document.write('"');
document.write(' href="' + relatedUrls[r] + '"><img style="width:72px;height:72px;border:0px;" src="'+thumburl[r]+'"/><br/><div style="width:72px;padding-left:3px;height:65px;border: 0pt none ; margin: 3px 0pt 0pt; padding: 0pt; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">'+relatedTitles[r]+'</div></a>');
if (r < relatedTitles.length - 1) {r++;} else {r = 0;}
i++;
}
document.write('</div>');
}
//]]>
</script>
</b:if>
<!-- Entradas relacionadas con miniatura. Script y Estilo -->
<b:if cond='data:blog.pageType == "item"'>
<style type='text/css'>
#related-posts {
float:center;
text-transform:none;
height:100%;
min-height:100%;
padding-top:5px;
padding-left:5px;
}
#related-posts h2{
font-size: 1.6em;
font-weight: bold;
color: black;
font-family: Georgia, “Times New Roman”, Times, serif;
margin-bottom: 0.75em;
margin-top: 0em;
padding-top: 0em;
}
#related-posts a{
color:black;
}
#related-posts a:hover{
color:black;
}
#related-posts a:hover {
background-color:#d4eaf2;
}
</style>
<script type='text/javascript'>
//<![CDATA[
//Script by Aneesh of www.bloggerplugins.org
//Released on August 19th August 2009
var relatedTitles = new Array();
var relatedTitlesNum = 0;
var relatedUrls = new Array();
var thumburl = new Array();
function related_results_labels_thumbs(json) {
for (var i = 0; i < json.feed.entry.length; i++) {
var entry = json.feed.entry[i];
relatedTitles[relatedTitlesNum] = entry.title.$t;
try
{thumburl[relatedTitlesNum]=entry.media$thumbnail.url;}
catch (error){
s=entry.content.$t;a=s.indexOf("<img");b=s.indexOf("src=\"",a);c=s.indexOf("\"",b+5);d=s.substr(b+5,c-b-5);if((a!=-1)&&(b!=-1)&&(c!=-1)&&(d!="")){
thumburl[relatedTitlesNum]=d;} else thumburl[relatedTitlesNum]='http://1.bp.blogspot.com/_u4gySN2ZgqE/SosvnavWq0I/AAAAAAAAArk/yL95WlyTqr0/s400/noimage.png';
}
if(relatedTitles[relatedTitlesNum].length>35) relatedTitles[relatedTitlesNum]=relatedTitles[relatedTitlesNum].substring(0, 35)+"...";
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
relatedUrls[relatedTitlesNum] = entry.link[k].href;
relatedTitlesNum++;
}}}}
function removeRelatedDuplicates_thumbs() {
var tmp = new Array(0);
var tmp2 = new Array(0);
var tmp3 = new Array(0);
for(var i = 0; i < relatedUrls.length; i++) {
if(!contains_thumbs(tmp, relatedUrls[i])) {
tmp.length += 1;
tmp[tmp.length - 1] = relatedUrls[i];
tmp2.length += 1;
tmp3.length += 1;
tmp2[tmp2.length - 1] = relatedTitles[i];
tmp3[tmp3.length - 1] = thumburl[i];
}}
relatedTitles = tmp2;
relatedUrls = tmp;
thumburl=tmp3;
}
function contains_thumbs(a, e) {
for(var j = 0; j < a.length; j++) if (a[j]==e) return true;
return false;
}
function printRelatedLabels_thumbs() {
for(var i = 0; i < relatedUrls.length; i++)
{
if((relatedUrls[i]==currentposturl)||(!(relatedTitles[i]))) {
relatedUrls.splice(i,1);
relatedTitles.splice(i,1);
thumburl.splice(i,1);
}}
var r = Math.floor((relatedTitles.length - 1) * Math.random());
var i = 0;
if(relatedTitles.length>0) document.write('<h2>'+relatedpoststitle+'</h2>');
document.write('<div style="clear: both;"/>');
while (i < relatedTitles.length && i < 20 && i<maxresults) {
document.write('<a style="text-decoration:none;padding:5px;float:left;');
if(i!=0) document.write('border-left:solid 0.5px #d4eaf2;"');
else document.write('"');
document.write(' href="' + relatedUrls[r] + '"><img style="width:72px;height:72px;border:0px;" src="'+thumburl[r]+'"/><br/><div style="width:72px;padding-left:3px;height:65px;border: 0pt none ; margin: 3px 0pt 0pt; padding: 0pt; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal;">'+relatedTitles[r]+'</div></a>');
if (r < relatedTitles.length - 1) {r++;} else {r = 0;}
i++;
}
document.write('</div>');
}
//]]>
</script>
</b:if>
<!-- Entradas relacionadas con miniatura. Script y Estilo -->
Una vez hecho esto, seguimos hacia abajo y buscamos el lugar dónde queremos que aparezcan los enlaces. Allí pondremos el siguiente código. Lo normal será que lo pongamos en el pie del post (post-footer) y si tenemos plantillas clásicas, dentro de post-footer post-footer-line-3. Si tenemos ya algo metido ahí, pues lo colocamos a continuación para que esto salga lo último.
<!-- Entradas relacionadas con miniatura -->
<b:if cond='data:blog.pageType == "item"'>
<div id='related-posts'>
<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.isLast != "true"'>
</b:if>
<b:if cond='data:blog.pageType == "item"'>
<script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&callback=related_results_labels_thumbs&max-results=6"' type='text/javascript'/></b:if></b:loop><a href='http://www.bloggerplugins.org/2009/08/related-posts-thumbnails-blogger-widget.html' style='display:none;'>Related Posts with thumbnails for blogger</a><a href='http://www.bloggerplugins.org/' style='display:none;'>blogger tutorials</a>
<script type='text/javascript'>
var currentposturl="<data:post.url/>";
var maxresults=5;
var relatedpoststitle="Posts relacionados";
removeRelatedDuplicates_thumbs();
printRelatedLabels_thumbs();
</script>
</div><div style='clear:both'/>
</b:if>
<!-- Entradas relacionadas con miniatura -->
<b:if cond='data:blog.pageType == "item"'>
<div id='related-posts'>
<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.isLast != "true"'>
</b:if>
<b:if cond='data:blog.pageType == "item"'>
<script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&callback=related_results_labels_thumbs&max-results=6"' type='text/javascript'/></b:if></b:loop><a href='http://www.bloggerplugins.org/2009/08/related-posts-thumbnails-blogger-widget.html' style='display:none;'>Related Posts with thumbnails for blogger</a><a href='http://www.bloggerplugins.org/' style='display:none;'>blogger tutorials</a>
<script type='text/javascript'>
var currentposturl="<data:post.url/>";
var maxresults=5;
var relatedpoststitle="Posts relacionados";
removeRelatedDuplicates_thumbs();
printRelatedLabels_thumbs();
</script>
</div><div style='clear:both'/>
</b:if>
<!-- Entradas relacionadas con miniatura -->
Si guardamos, ya tendremos disponible nuestro nuevo artilugio. No podremos apreciar los cambios con Vista Previa, porque tanto en el script como en la parte HTML, se ha incluido una condición para que sólo sea visible en las entradas individuales (item). Habrá que acceder a una entrada cualquiera para poder verlo en funcionamiento.
En esta última parte de código, var maxresults sirve para indicar el número de entradas relacionadas que queremos mostrar y var relatedpoststitle, para el texto que queremos mostrar delante de ellas. Las características de fuente, fondo y efecto hover, se puede configurar desde la primera parte del primer código facilitado aquí.
Encontrar imágenes licenciadas CC en Flickr
09/11/2009
Flickr es una de las mayores y mejores librerías de imágenes que existen actualmente en internet. Además tiene una forma relativamente fácil de poder ver la licencia de uso de cada uno de los trabajos que allí podemos encontrar. El problema surge cuando en lugar de ver imágenes y luego comprobar su licencia queremos hacer la tarea al revés. Es decir, buscar imágenes que se ajusten a determinada licencia.
No sé si es nuevo o no, pero yo al menos no lo había visto. Casualmente me he tropezado con este apartado desde dónde poder utilizar el buscador de Flickr con un filtro que sólo nos muestra las imágenes que tengan determinada licencia, dentro de las posibles variantes que ofrece Creative Commons.
Actualmente hay más de 100.000.000 de imágenes que permiten su reutilización y que están allí esperándoos. Eso sí, ya que sabeis que es uno de los requisitos, que no se os olvide referenciar al autor. No cuesta nada.
Una segunda opción aunque indirecta, es la aplicación online FlickrCC, que nos permite buscar por palabras claves sólo entre las imágenes que tengan una licencia CC.
Este invento de Peter Shanks, nos permite filtrar también según las imágenes puedan ser modificadas y/o estén autorizadas para su uso comercial. Adicionalmente junto con la miniatura, la ventana de la derecha muestra la referencia de atribución del trabajo, el enlace a la imagen original, así como un par de enlaces más a herramientas online para edición.
Flickr es una de las mayores y mejores librerías de imágenes que existen actualmente en internet. Además tiene una forma relativamente fácil de poder ver la licencia de uso de cada uno de los trabajos que allí podemos encontrar. El problema surge cuando en lugar de ver imágenes y luego comprobar su licencia queremos hacer la tarea al revés. Es decir, buscar imágenes que se ajusten a determinada licencia.No sé si es nuevo o no, pero yo al menos no lo había visto. Casualmente me he tropezado con este apartado desde dónde poder utilizar el buscador de Flickr con un filtro que sólo nos muestra las imágenes que tengan determinada licencia, dentro de las posibles variantes que ofrece Creative Commons.
Actualmente hay más de 100.000.000 de imágenes que permiten su reutilización y que están allí esperándoos. Eso sí, ya que sabeis que es uno de los requisitos, que no se os olvide referenciar al autor. No cuesta nada.
Una segunda opción aunque indirecta, es la aplicación online FlickrCC, que nos permite buscar por palabras claves sólo entre las imágenes que tengan una licencia CC.
Este invento de Peter Shanks, nos permite filtrar también según las imágenes puedan ser modificadas y/o estén autorizadas para su uso comercial. Adicionalmente junto con la miniatura, la ventana de la derecha muestra la referencia de atribución del trabajo, el enlace a la imagen original, así como un par de enlaces más a herramientas online para edición.

Modificar la anchura en los enlaces de navegación
06/11/2009
Hace ya tiempo que hablamos sobre cómo sustituir los enlaces "Entradas antiguas", "Entradas más recientes" por otro texto o incluso por imágenes. También se vió posteriormente como construir un menú flotante para poder navegar por el blog con este artilugio. Sin embargo, todavía se nos quedó una pequeña cosa en el tintero.
No es un detalle demasiado importante, pero para algunos de vosotros parece que sí es un gran problema y, como mínimo, resulta molesto.
En las plantillas con ancho variable, cuando se observa el blog desde pantallas relativamente anchas, los enlaces laterales puede que se vean muy desangelados porque se van a los extremos. Podría ser interesante colocarlos más juntos, pero sus respectivas clases están hechas con FLOAT por lo que inevitablemente se van a los extremos.
La solución es que el contenedor general del artilugio (#blog-pager) no ocupe todo el ancho disponible. Para limitarlo bastaría con modificar ese selector con un WIDTH, bien en porcentaje bien en pixels para que su tamaño sea fijo, lo que os resulte mejor según el diseño de vuestro blog. Tres ejemplos...
Hace ya tiempo que hablamos sobre cómo sustituir los enlaces "Entradas antiguas", "Entradas más recientes" por otro texto o incluso por imágenes. También se vió posteriormente como construir un menú flotante para poder navegar por el blog con este artilugio. Sin embargo, todavía se nos quedó una pequeña cosa en el tintero.No es un detalle demasiado importante, pero para algunos de vosotros parece que sí es un gran problema y, como mínimo, resulta molesto.
En las plantillas con ancho variable, cuando se observa el blog desde pantallas relativamente anchas, los enlaces laterales puede que se vean muy desangelados porque se van a los extremos. Podría ser interesante colocarlos más juntos, pero sus respectivas clases están hechas con FLOAT por lo que inevitablemente se van a los extremos.
#blog-pager-older-link {float: right;}
#blog-pager-newer-link {float: left;}
#blog-pager {text-align: center;}
#blog-pager-newer-link {float: left;}
#blog-pager {text-align: center;}
La solución es que el contenedor general del artilugio (#blog-pager) no ocupe todo el ancho disponible. Para limitarlo bastaría con modificar ese selector con un WIDTH, bien en porcentaje bien en pixels para que su tamaño sea fijo, lo que os resulte mejor según el diseño de vuestro blog. Tres ejemplos...
#blog-pager {text-align: center;width:80%;}
#blog-pager {text-align: center;width:80%;max-width:600px;min-width:400px;}
#blog-pager {text-align: center;width:400px;}
#blog-pager {text-align: center;width:80%;max-width:600px;min-width:400px;}
#blog-pager {text-align: center;width:400px;}
Una ventana (bloque) emergente con un click
03/11/2009
Continuando con la idea del splash screen que ni era splash ni era screen, el otro día nos preguntaban cómo hacer para que en lugar de salir automáticamente, ese aviso o lo que sea, saliera a demanda. Es decir, que saliera al pinchar en un botón o enlace y que se retirara al volver a pinchar. Prueba, prueba...
Para ello, lo primero que tenemos que hacer es insertar una función que cambiará de oculto a visible aquel bloque que nosotros identifiquemos adecuadamente. Así, antes del </head> metemos...
Ahora colocamos justo después del <body>, el bloque que vamos a mostrar a modo de ventana emergente, pero usando la técnica de la entrada enlazada al principio, es decir un Z-INDEX con un número grande que la muestre en la parte superior y centrado con TOP/LEFT y los MARGIN correspondientes (la mitad del ancho/alto del DIV):
En cuanto a la plantilla, ya hemos terminado y podemos grabar aunque no apreciemos nada en la Vista Previa. Ahora toca colocar el enlace que hará que lo anterior sea visible y al repetir el click, vuelva a ser invisible. Podría ser por ejemplo en la barra lateral, como gadget HTML.
En los dos últimos códigos insertados IDENTIFICAVOBLOQUE tiene que ser una combinación alfanumérica igual en ambos casos. Si se utilizara este sistema para plegar/desplegar otro bloque, tanto el enlace como el bloque tendrían que tener también la misma combinación alfanumérica entre sí, pero distinta necesariamente de la de otro/s bloque/s.
Opcionalmente por si nuestro bloque se tiene que abrir justo encima del enlace que serviría para volverlo a cerrar, lo cual complicaría esta acción, podemos incluir en el propio código que forma la información oculta, un segundo enlace con el mismo IDENTIFICATIVOBLOQUE, a modo de botón "cerrar" y que ya habeis podido ver en los ejemplos del principio.
Para ello, lo primero que tenemos que hacer es insertar una función que cambiará de oculto a visible aquel bloque que nosotros identifiquemos adecuadamente. Así, antes del </head> metemos...
<style type='text/css'>
.visible { display:block; }
.invisible { display:none; }
</style>
<script type='text/JavaScript'>
function plegardesplegar(identificacion){
var menu = document.getElementById(identificacion);
if(menu.className == "visible"){
menu.className = "invisible";
}
else{ menu.className = "visible"; } }
</script>
.visible { display:block; }
.invisible { display:none; }
</style>
<script type='text/JavaScript'>
function plegardesplegar(identificacion){
var menu = document.getElementById(identificacion);
if(menu.className == "visible"){
menu.className = "invisible";
}
else{ menu.className = "visible"; } }
</script>
Ahora colocamos justo después del <body>, el bloque que vamos a mostrar a modo de ventana emergente, pero usando la técnica de la entrada enlazada al principio, es decir un Z-INDEX con un número grande que la muestre en la parte superior y centrado con TOP/LEFT y los MARGIN correspondientes (la mitad del ancho/alto del DIV):
<div class='invisible' id='identificativobloque' style='z-index:99;position:absolute;overflow:visible;top:50%;left:50%;width:400px;height:300px;margin-top:-150px;margin-left:-200px;border:5px solid #990000;background:#ffffff;color:#000000;'>Aquí va un texto, una imagen, un enlace, un vídeo...</div>
En cuanto a la plantilla, ya hemos terminado y podemos grabar aunque no apreciemos nada en la Vista Previa. Ahora toca colocar el enlace que hará que lo anterior sea visible y al repetir el click, vuelva a ser invisible. Podría ser por ejemplo en la barra lateral, como gadget HTML.
<a href="javascript:plegardesplegar('identificativobloque');">ENLACE DE TEXTO O IMAGEN</a>
En los dos últimos códigos insertados IDENTIFICAVOBLOQUE tiene que ser una combinación alfanumérica igual en ambos casos. Si se utilizara este sistema para plegar/desplegar otro bloque, tanto el enlace como el bloque tendrían que tener también la misma combinación alfanumérica entre sí, pero distinta necesariamente de la de otro/s bloque/s.
Opcionalmente por si nuestro bloque se tiene que abrir justo encima del enlace que serviría para volverlo a cerrar, lo cual complicaría esta acción, podemos incluir en el propio código que forma la información oculta, un segundo enlace con el mismo IDENTIFICATIVOBLOQUE, a modo de botón "cerrar" y que ya habeis podido ver en los ejemplos del principio.
<div class='invisible' id='identificativobloque' style='z-index:99;position:absolute;overflow:visible;top:50%;left:50%;width:400px;height:300px;margin-top:-150px;margin-left:-200px;border:5px solid #990000;background:#ffffff;color:#000000;'><a href="javascript:plegardesplegar('identificativobloque');" style="position:absolute;top:-20px;right:0px;line-height:10px;font-size:10px;" >[X]</a>Aquí va un texto, una imagen, un enlace, un vídeo...</div>
[X]
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut nulla leo, facilisis non euismod elementum, hendrerit at velit. Maecenas vitae justo vel mauris dignissim pellentesque sed et diam. Etiam dui quam, posuere ut egestas vitae, dapibus id felis. Donec egestas faucibus purus, a bibendum enim feugiat quis. Sed pellentesque orci porta urna tincidunt nec commodo mauris semper. Suspendisse at quam mattis velit commodo sollicitudin id a ante. Maecenas quis libero tortor, vel accumsan erat. Nullam sit amet enim in arcu tristique euismod.
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed elementum arcu justo, sed tincidunt lacus. Fusce lorem risus, accumsan vel commodo at, tempus a justo.
Botón para ofrecer suscripción por correo
01/11/2009
Hay gente que lo de los feeds todavía no lo termina de controlar y para los administradores que se preocupan por ellos, va dedicada esta entrada.
La forma más habitual de ver una fuente es a través de un lector. Bloglines, Google Reader, Alesti, FeedDemon, FeedReader... son algunos de los más conocidos. Una de las opciones de FeedBurner (uno de los gestores de fuentes más utilizados por sus grandes posibilidades y del que ya hablaremos más en otra ocasión) es poder mostrar en la propia fuente unos botones para agregar a los lectores más conocidos, pero también un enlace para la suscripción por e-mail.

Este último sistema sólo requiere introducir la dirección de correo y una verificación de palabra. A partir de ese momento, el suscriptor recibirá un correo cada vez que su blog favorito publique una nueva entrada, con el contenido de la misma. Anular la suscripción si uno se aburre de recibir este tipo de correos es igual de fácil, porque creo recordar que incluso viene un enlace para ello en el propio correo recibido.

No obstante, para el tipo de usuarios mencionado al principio de este post y que quizás no están nada familiarizados con los feeds, pero que sí saben utilizar su correo electrónico, podría ser conveniente poner un enlace directo a la suscripción por e-mail, de manera que sólo tengan que pinchar y poner su dirección.
Para hacer el enlace, primero teneis que averiguar cual es la dirección que lleva a la suscripción de vuestro feed. Si es de Feedburner, la URL tendrá este formato:
http://feedburner.google.com/fb/a/mailverify?uri=NOMBRE_FEED
Por tanto, es suficiente con construir un enlace de texto y/o imagen para facilitar la tarea a nuestros tecnológicamente rezagados lectores. Ejemplo:
Se me ocurre un segundo sistema utilizando un pop-up (o ventana emergente), que además de para molestarnos con anuncios, también sirven en ocasiones para otras cosas.
En este caso, el enlace abrirá una ventana nueva, redimensionada al tamaño que queramos y dentro se podrá ver el formulario de suscripción. Pinchando en el siguiente enlace podeis ver cómo funciona este otro sistema.
Suscribir por correo
Aunque en el ejemplo lo hemos hecho con texto, esto no tiene que ser necesariamente así y al igual que antes, el enlace puede estar hecho por una imagen, formando un botón o con cualquier idea que se os ocurra.
El código sería este otro:
Un último ejemplo usando Lightwindow para aquellos que lo tengais instalado. Demo en el dibujo de abajo del todo.

Actualización: Miguel nos ha hecho investigar un poquito más y descubrí que me había olvidado de la solución que ofrece el propio Feedburner, que aunque no es un botón propiamente dicho, funciona a través de un formulario en el que directamente se coloca la dirección de correo del suscriptor.
Este es el código:
Actualización: Pocho nos expica la manera de que el formulario de subscripción se muestre en castellano. Para eso es suficiente con añadir tras NOMBRE_FEED, los caracteres &loc=es_ES. De esta manera, su feed (Pocholog), quedaría así:
http://feedburner.google.com/fb/a/mailverify?uri=Pocholog&loc=es_ES
Gracias por la aportación.
Hay gente que lo de los feeds todavía no lo termina de controlar y para los administradores que se preocupan por ellos, va dedicada esta entrada.La forma más habitual de ver una fuente es a través de un lector. Bloglines, Google Reader, Alesti, FeedDemon, FeedReader... son algunos de los más conocidos. Una de las opciones de FeedBurner (uno de los gestores de fuentes más utilizados por sus grandes posibilidades y del que ya hablaremos más en otra ocasión) es poder mostrar en la propia fuente unos botones para agregar a los lectores más conocidos, pero también un enlace para la suscripción por e-mail.

Este último sistema sólo requiere introducir la dirección de correo y una verificación de palabra. A partir de ese momento, el suscriptor recibirá un correo cada vez que su blog favorito publique una nueva entrada, con el contenido de la misma. Anular la suscripción si uno se aburre de recibir este tipo de correos es igual de fácil, porque creo recordar que incluso viene un enlace para ello en el propio correo recibido.

No obstante, para el tipo de usuarios mencionado al principio de este post y que quizás no están nada familiarizados con los feeds, pero que sí saben utilizar su correo electrónico, podría ser conveniente poner un enlace directo a la suscripción por e-mail, de manera que sólo tengan que pinchar y poner su dirección.
Para hacer el enlace, primero teneis que averiguar cual es la dirección que lleva a la suscripción de vuestro feed. Si es de Feedburner, la URL tendrá este formato:
http://feedburner.google.com/fb/a/mailverify?uri=NOMBRE_FEED
Por tanto, es suficiente con construir un enlace de texto y/o imagen para facilitar la tarea a nuestros tecnológicamente rezagados lectores. Ejemplo:
Para recibir nuestras entradas en tu correo según se vayan publicando, pincha en esta imagen e introduce tu dirección de e-mail.
<a href="http://feedburner.google.com/fb/a/mailverify?uri=NOMBRE_FEED"><img style="display:block; margin:0px auto; text-align:center;cursor:pointer; cursor:hand;" src="URL_IMAGEN" border="0" alt=""/></a>
<a href="http://feedburner.google.com/fb/a/mailverify?uri=NOMBRE_FEED"><img style="display:block; margin:0px auto; text-align:center;cursor:pointer; cursor:hand;" src="URL_IMAGEN" border="0" alt=""/></a>
Para recibir nuestras entradas en tu correo según se vayan publicando, pincha en esta imagen e introduce tu dirección de e-mail.

A la izquierda un ejemplo operativo de cómo podría quedar un enlace de este tipo con nuestro feed. (NOMBRE_FEED = Oloblogger). En verde lo que tendreis que personalizar.
Se me ocurre un segundo sistema utilizando un pop-up (o ventana emergente), que además de para molestarnos con anuncios, también sirven en ocasiones para otras cosas.
En este caso, el enlace abrirá una ventana nueva, redimensionada al tamaño que queramos y dentro se podrá ver el formulario de suscripción. Pinchando en el siguiente enlace podeis ver cómo funciona este otro sistema.
Suscribir por correo
Aunque en el ejemplo lo hemos hecho con texto, esto no tiene que ser necesariamente así y al igual que antes, el enlace puede estar hecho por una imagen, formando un botón o con cualquier idea que se os ocurra.
El código sería este otro:
<script language="JavaScript" type="text/javascript">
function PopWindow() {
window.open('http://feedburner.google.com/fb/a/mailverify?uri=NOMBRE_FEED', 'Suscribir', 'width=ANCHO, height=ALTO, menubar=no, scrollbars=no, toolbar=no, location=no, directories=no, resizable=no, top=0,left=0');
}
</script>
<a href="JavaScript:PopWindow()">Suscribir por correo</a>
function PopWindow() {
window.open('http://feedburner.google.com/fb/a/mailverify?uri=NOMBRE_FEED', 'Suscribir', 'width=ANCHO, height=ALTO, menubar=no, scrollbars=no, toolbar=no, location=no, directories=no, resizable=no, top=0,left=0');
}
</script>
<a href="JavaScript:PopWindow()">Suscribir por correo</a>
Un último ejemplo usando Lightwindow para aquellos que lo tengais instalado. Demo en el dibujo de abajo del todo.
<a rel="" class="lightwindow" params="lightwindow_width=ANCHO, lightwindow_height=ALTO, lightwindow_loading_animation=false" title="Suscribir por e-mail" href="http://feedburner.google.com/fb/a/mailverify?uri=NOMBRE_FEED"><img src="URL_IMAGEN"/></a>

Actualización: Miguel nos ha hecho investigar un poquito más y descubrí que me había olvidado de la solución que ofrece el propio Feedburner, que aunque no es un botón propiamente dicho, funciona a través de un formulario en el que directamente se coloca la dirección de correo del suscriptor.
Este es el código:
<form action="http://feedburner.google.com/fb/a/mailverify" style="margin-right:3px;border:1px solid #ccc;padding:3px;text-align:center;" target="popupwindow" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=NOMBRE_FEED', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true"><p>Enter your email address:</p><p><input style="width:140px" name="email" type="text"/></p><input value="NOMBRE_FEED" name="uri" type="hidden"/><input value="es_ES" name="loc" type="hidden"/><input value="Subscribe" type="submit"/><p>Delivered by <a href="http://feedburner.google.com" target="_blank">FeedBurner</a></p></form>
Actualización: Pocho nos expica la manera de que el formulario de subscripción se muestre en castellano. Para eso es suficiente con añadir tras NOMBRE_FEED, los caracteres &loc=es_ES. De esta manera, su feed (Pocholog), quedaría así:
http://feedburner.google.com/fb/a/mailverify?uri=Pocholog&loc=es_ES
Gracias por la aportación.
Suscribirse a:
Entradas (Atom)













