JMiur [E]

Hay decenas de trucos que agregamos y que nos dicen cosas como "acá debemos poner la dirección de los feeds". Lo hacemos porque es sencillo, funcionarán o no funcionarán pero ¿qué demonios es un feed? ¿Magia negra? Nada de eso, en realidad, no es otra cosa que un archivo común y corriente.

Los feeds son archivos creados por el servidor (Blogger en nuestro caso) y si los miramos, veremos que contiene una serie de etiquetas con información de lo que se ha publicado en nuestro sitio; como muchas otras cosas en la web, hay muchos formatos de feeds y la diferencia entre ellos poco nos interesa, será RSS (Rich Site Summary) o Atom o XML, da igual y serán los lectores de feeds los que se encarguen de interpretarlos.

Como decía, muchos scripts que utilizamos en Blogger hacen referencia a los feeds; los usamos para mostrar los últimos comentarios, las últimas entradas, los posts relacionados, aleatorios, etc, etc. Es que, al no tener acceso a esos datos, nos vemos en la necesidad de emplear un camino alternativo y ese camino tiene nombre y lo hemos utilizado muchísimas veces, se llama JSON (JavaScript Object Notation) que no es otra cosa que un "archivo especial", también creado por el servidor y que tiene un formato diferente; allí, los datos, están guardados de tal forma que podemos leerlos con JavaScript.

Esto parece algo complicadísimo pero en realidad no lo es ... bueno, más o menos. En términos generales, para hacerlo sólo necesitamos dos cosas, cargar el script indicando que queremos que esté en ese formato y tener alguna función que lo interprete o lo manipule:
<script type="text/javascript">
  function leerfeeds(json) {
    // esta es la función y aquí haremos algo
  }
</script>

<script src="http://miblog.blogspot.com/feeds/posts/default?alt=json-in-script&callback=leerfeeds"></script>
Esto suele ser mucha información, demasiada, así que, generalmente, se nos dice que agreguemos parámetros para indicar la cantidad de información que solicitamos o la forma en que queremos que se nos envie. Por ejemplo, así solicitamos que nos envien sólo las últimas diez entradas, ordenadas por fecha:
<script src="http://miblog.blogspot.com/feeds/posts/default?max-results=10&orderby=published&alt=json-in-script&callback=leerfeeds"></script>
Claro, una de las claves es justamente, resolver eso de "aquí haremos algo" pero empecemos por saber qué datos son accesibles y cómo leerlos así que vamos a ver cómo sería una función elemental:
<script type='text/javascript'>
//<![CDATA[
function leerfeeds(json) {

  var entry, posttitle, posturl, postimg, postcontent, postcategoria, postfecha;
  var numposts = 10; // la cantidad de entradas a leer

  // con un bucle, leemos las diez entradas que solicitamos, una por una
  for (var i = 0; i < numposts; i++) {

    // los datos de cada entrada se guardan en la variable entry
    entry = json.feed.entry[i];
    // como puede ser que no haya tantas entradas como solicitamos, si ya no hay más, terminamos
    if (i==json.feed.entry.length) { break; }

    // el título de la entrada lo leemos leyendo entry.title.$t
    posttitle = entry.title.$t;

    // la URL de la entrada hay que buscarla ya que hay varias
    // una contiene la URL del blog, otra la de la entrada, otra la de los archivos adjuntos, etc
    for (var k = 0; k < entry.link.length; k++) {
      if (entry.link[k].rel == 'alternate') {
        // la encontramos: esta es la direccion URL de la entrada
        posturl = entry.link[k].href;
        break;
      }
    }
    
    // buscamos el contenido de la entrada que puede estar completa o no
    postcontent = "";
    if ("content" in entry) {
      // el contenido de la entrada en un feed completo
      postcontent = entry.content.$t;
    } else if ("summary" in entry) {
      // el contenido de la entrada en un feed corto
      postcontent = entry.summary.$t;
    }
    // en ambos casos, el contenido es nuestra entrada en formato HTML

    // y hay muchos más datos que pueden ser leidos

  /*
    entry.category[] y entry.category[x].term nos permitirá leer las etiquetas que tiene esa entrada
    entry.published.$t es la fecha de publicación
    entry.updated.$t es la fecha de la ultima actualización
    entry.author[] y entry.author[x].name.$t nos permitirá leer el nombre de los autores
  */

    // ..........................................
    // ya tenemos los datos así que acá vamos a escribirlos en nuestra página
    // ..........................................

  }
}

//]]>
</script>
¿Cómo escribirlos? No hay una sola forma de hacerlo sino tantas como diseños se nos ocurran así que eso lo veremos luego ...

REFERENCIAS:Google Code

14 comentarios:

Manfenix  

to be continued... :P

Responder
JMiur  

Como cualquier telenovela :D

Responder
Graciela  

Misterio, demonio, magia negra, un culebrón de Google Code :P

Responder
Adrián J. Messina  

Empezemos por el factor sorpresa .
Estoy muy sorprendido con que se pueda hacer magia con los feeds y lograr manipularlos con nuestro amigo JSON, dejemos la magia negra para los scripts ya hechos ;) .
Tiene una pinta fabulosa.

Responder
JMiur  

No es difícil, es cosa de paciencia y tener suerte :-)

Responder
Santi Folch  

Muy interesante Miur, de nuevo aprendemos contigo :D

Responder
Ariane  

aguardando os próximos capítulos! este é um assunto que sempre me interessou e tenho certeza que, com seu modo de explicar, vou enfim entender :) abraços!

Responder
JMiur  

Hola Ariane. Un gusto saber de tí :-)

Esta es una de esas cosas que hemos venido usando hace años y a las que nunca había prestado atención pensando que era complicado pero ya no me lo parece tanto.

Responder
Adalberto  

Hola Jmiur, otra vez yo con una duda, quisiera saber si para usar JSON tengo que colocar algun script en la plantilla primero. O simplemente comienzo a hacer los tutoriales como si nada.

Responder
JMiur  

Adalberto:
Si te refieres a si necesitas alguna clase de librería extra, la respuesta es no. Basta que agregues los scripts tal y como los muestran las diferentes entradas.

Responder
Otakustv  

hola compañero no habra un tutorial para aprender json

JMiur  

No conozco ninguno que pueda recomendarte.

Responder
Richard Osorio  

buf intento y intento y no puedo

Responder
wiLliam  

Es complicado mejor no lo hago porque podria arruinar html de mi blog
pero igual el tema es muy interesante

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