jueves, octubre 5, 2006

La barra lateral

Posted in Blogging, Entretenimiento, Fotografía, WP Hacks a 10:19 pm por tlahui

No sé si han notado que la barra lateral de este blog ha cambiado en las últimas semanas. Eso no tiene nada de raro o especial, todo el mundo cambia las barras laterales de sus blogs.

A pesar de que WordPress.com me parece muy superior a otros servicios de blog gratuitos, una cosa que medio extraño de blogger.com es el poder modificar la plantilla de tu sitio, y sobre todo, el poder incluir muchos contenidos extras en la barra lateral. Pero no lo extraño mucho porque cada vez que quería modificar la plantilla tenía que revisar todo el código para encontrar el sitio exacto dónde hacerlo y en ocasiones tenía que leer documentación para usar las funciones predefinidas en blogger, pero lo peor es que muy a menudo fallaba, incluso me llegó a pasar que después de editar la plantilla algo no le gustaba a blogger y cortaba arbitrariamente el código dejando el sitio totalmente inutilizable.

En WordPress.com no te tienes que meter a las tripas de la plantilla para agregar contenido en la barra lateral, pero no puedes agregar cualquier tipo de contenido y a veces hay que ser ingeniosos. No todas las plantillas de WordPress tienen barra lateral, y algunas tienen dos barras. En la configuración de la plantilla en uso se pueden agregar o quitar contenidos con widgets predefinidos como pueden ser calendario, categorías, páginas, estadísticas, enlaces, etc. Los contenidos predefinidos están bien, pero a veces quieres algo diferente y ahí es donde se complica todo. WordPress ofrece dos formas de agregar contenidos no predefinidos: widgets RSS y widgets de texto.

Los widgets RSS sirven para agregar a tu sitio el contenido de una fuente RSS, como pueden ser noticias, actualizaciones de blogs, etc. Es decir, sirven para agregar contenido dinámico sobre el que no tienes control (a menos que tengas control sobre la fuente). Muchas veces eso es todo lo que se necesita, sin embargo no siempre es así pues no funciona con todos los tipos de fuente dinámica (como atom), ni con ciertos tipos de contenido, o bien la presentación es muy simple, o bien te gustaría tener control sobre el contenido.

En un widget de texto puedes poner código HTML fijo (no dinámico) con muchas limitaciones, no puedes usar todas las etiquetas, no puedes usar javascript, ni estilos en cascada, ni incrustar contenido en flash. Y aunque en las entradas normales ya puedes incluir videos de youtube o de google video y podcasts de odeo (que son básicamente contenidos en flash), parece que no se puede hacer en un widget de texto.

En resumen, los widgets RSS sirven para contenido dinámico sobre el cual no tienes ningún control, los widgets de texto te dan control (limitado) pero sólo permiten contenido fijo.

Todo esto viene a que hay un widget predefinido en WordPress.com que sirve para incluir miniaturas de tus fotos (hospedadas en flickr) en la barra lateral. En el blog de Tere lo pueden ver en acción. Lo que no me gusta de ese widget es que siempre muestra las últimas fotos en tu colección, de manera que mientras no agregues fotos a la colección, la miniatura en la barra lateral será siempre la misma. Yo quería que cada vez aparezca una foto al azar de mi colección. El problema es que los widgets existentes no permiten hacerlo, necesito que el contenido sea diferente cada vez, tener control y que sea dinámico al mismo tiempo. ¿Cómo lo logré?

La idea es más o menos simple, dadas las limitaciones en WordPress.com tendría que controlar el contenido desde afuera de WordPress. Lo cual me deja dos opciones, uso un widget RSS con una fuente RSS sobre la que yo tenga control, o bien uso un widget de texto con un código fijo y hago que el código apunte a un contenido sobre el que yo tenga el control.

Para la primer opción, necesito crear una fuente RSS, cosa que no sé hacer, pero no debe ser nada del otro mundo. En cambio con la segunda opción se que los widgets de texto pueden desplegar imágenes mediante el uso de la etiqueta <img> de html, así que podría hacer que esa etiqueta busque una imagen que en realidad no es una imagen, sino un programa en otro sitio que envíe una imagen al azar. Suena más complicado pero no lo es tanto.

Como pueden ver, ambas soluciones tienen un patrón en común, en ambos casos necesito decirle a WordPress que obtenga el contenido (fuente RSS o imagen) de un lugar ajeno a WordPress. Ese lugar ajeno pudiera ser el mismo sitio de flickr si tan sólo flickr ofreciera esa funcionalidad, como last.fm que si ofrece ese servicio para ambas opciones. Así que tuve que agregar un intermediario entre flickr y WordPress.com.

Opté por la segunda opción. Flickr ofrece una fuente RSS con las últimas 20 fotos y me encontré un programa en php (gracias a Tim Bishop) que lee esa fuente para extraer algunas de esas fotos. Así que sólo tuve que modificar el programita para que tome una foto al azar de la fuente y en WordPress usé un widget de texto que usa la etiqueta <img> que apunta al programita. También tuve que buscar hospedaje para mi programa. Si les interesa, este es el código, para usarlo también se necesita MagpieRSS. El hospedaje gratuito lo conseguí en 400webs.com (primero probé ifast.com pero no se conectaba con flickr, luego probé con AddYour.net pero dejó de funcionar), y aquí pueden ver el script en acción.

Esta forma de resolver el problema es útil para otros casos en que se cuenta con una fuente RSS (que son muy comunes), sólo habría que adaptar el script de php. Por lo pronto pienso usar este método con los álbums de fotos en Picasa Web Albums, y seguiré buscando algún truco para incluir contenido en flash.