JMiur [E]

Mostrar una entrada al azar es un tema recurrente y, lo confieso, nunca me ha parecido demasiado útil pero, como siguen preguntando, primero que nada, debo decirles que pueden verlo explicado acá, acá y acá así que, lo que sigue no aportará nada nuevo.

Es muy fácil de implementar, sólo necesitamos un pequeño script y un botón con un enlace donde hacer click.

Vamos al Diseño de la plantilla y en la solapa Edición HTML, sin expandir los artilugios agregamos el código justo antes de </head>:
<script type="text/javascript">
//<![CDATA[
var _yourBlogUrl = "URL_blog";
function randomPost() {
  var script = document.createElement("script");
  script.setAttribute("type", "text/javascript");
  var theUrl = _yourBlogUrl +"/feeds/posts/summary?alt=json-in-script &callback=getTotalPostsCallback&start-index=1&max-results=1";
  script.setAttribute("src", theUrl);
  document.documentElement.firstChild.appendChild(script);
}
function getTotalPostsCallback(json) {
  var totalResults = json.feed.openSearch$totalResults.$t;
  if (totalResults > 0) {
    getRandomPostNumber(totalResults);
  }
}
function getRandomPostNumber(totalResults) {
  var randomNumber = Math.floor((Math.random() * totalResults) + 1);
  getRandomUrl(randomNumber);
}
function getRandomUrl(randomNumber) {
  var script = document.createElement("script");
  script.setAttribute("type", "text/javascript");
  var theUrl = _yourBlogUrl +"/feeds/posts/summary?alt=json-in-script&callback=getTheUrlCallback&start-index=" 
+ randomNumber + "&max-results=1";
  script.setAttribute("src", theUrl);
  document.documentElement.firstChild.appendChild(script);
}
function getTheUrlCallback(json) {
  var theUrl;
  for(var i = 0; i < json.feed.entry[0].link.length; i++) {
    if (json.feed.entry[0].link[i].rel == "alternate") {
      theUrl = json.feed.entry[0].link[i].href;
      break;
  }
}
if(theUrl) { window.location.href = theUrl; }
}
//]]>
</script>
Donde, lo único que debemos cambiar el la dirección del blog. Ahora falta agregar el enlace. Creamos entonces un elemento HTML y allí colocamos el texto o la imagen que nos servirá de botón:
<a href="javascript:randomPost();"> TEXTO/IMAGEN </a>

21 comentarios:

littoXD  

Holas muy bueno este "truquillo"que te busca automaticamente un post aleatorio, bueh pasabah porque hace rato que no andaba x aca, y de paso a agradecerte la mano que me diste con la barra menu. Un abrazo Jorge..
Eternamente agradecido littoXD

Responder
La Blogueria  

Mostrar un post aleatorio siempre me pareció una tontería más... hasta que me di cuenta de que es una opción más para navegar por un blog que te gusta y aún estás descubriendo, y me pareció divertido.

Más divertido que poner un reloj, al menos :D

Responder
susana espíndola  

hola! La verdad que a mí sí me parece útil para un blog que tengo de poesía y que como no he cargado muchos poemas, mi idea es que al entrar pero de manera automática muestre siempre un post distinto. Y es esto todavía lo que no encuentro que muestre aleatoriamente un post pero de manera automática. ¿Será posible esto? Justamente esta mañana pensaba pasar por tu blog para hacerte esta consulta. Para mí sería muy útil en ese blog que tengo pocas entradas y que la idea sería no subir de continuo poemas.
Ojalá me des alguna idea!!!saludos y gracias desde ya!!!

Responder
JMiur  

¿Cómo anda, littoXD? Me alegro que el tema se haya solucionado.

La Blogueria: Ayyyyy eso del reloj, dolió :D

Hablando en serio me parece que la utilidad, depende mucho del tipo de blog. Pero, también es cierto que hay algo muy subjetivo y que eso no puede medirse ¿Te parece divertido? Entonces es útil :D

Susana:
Técnicamente, parecería sencillo hacer eso pero, produciría un efecto indeseado: se generaría un bucle infinito. Voy a tratar de explicarlo.

Si colocas algo así:
<body onload='randomPost();'>

Cuando se carga una página, aleatoriamente, se dirigirá a un post cualquiera ¿y que pasará entonces? Comenzará a cargarse ese post y, otra vez se encontrara con ese código que le dice, cargue un post aleatorio así que, lo hará y volverá a cargarse otra página que, encontrará la misma instrucción y volverá a cargarse. Así hasta el infinito. Moraleja, nunca se cargará ninguna.

Sólo tendría sentido si, desde un blog, tienes un enlace a otro blog y entonces sí, allí se cargaría cualquier post de ese segundo blog.

¿Se comprende el problema?

Responder
La Blogueria  

Pues no iba con intención de chinchar... :D y confieso que... errhh..estoy "diseñando" un relojito... ehhrr... para mi blog...

Responder
JMiur  

Jajaja Podríamos diseñar uno con un buho que en lugar de manecillas, gire la cabeza o mueva los ojos en círculo :D

Si esto es difícil ¿que tal un reloj cucú con una lechuza?

Imagina, cientos de lectores esperando la hora exacta para verlo salir.

Ya lo veo ... un ambiente tenso, un contador marca el tiempo que falta para la nueva aparición ... 5 ... 4 ... 3 ... la gente grita lo números ... 2 ... es un coro perfecto ... ¡¡¡¡¡¡¡UNO!!!!!!! Y sale la lechuza, hace su monería (o su lechucería) y la gente aplaude. Lentamente, se retiran con una sonrisa en los labios, felices de haber participado del acontecimiento :)

Sí, está bien, mejor me callo :X

Responder
La Blogueria  

¡¡¡cóóóómooo!!!???

¡¡QUIERO UNO ASÍÍÍÍÍÍ!!!

Responder
JMiur  

Jajajaja, ¿No conoces alguien que sepa trabajar con Flash? No creo que sea tan complicado.

¿Y si lo colocas en un post como propuesta para tus lectores? Que envien colaboraciones, hacemos un concurso. Si te decides, lo promovemos. Sería divertido :D

Responder
La Blogueria  

¡Me encanta la idea! :D Lo que ya no tengo tan claro es en qué se puede basar el concurso, me refiero a los incentivos, si me puedes orientar un poco, soltamos el golem... ¿estamos seguros de que queremos que la gente vaya haciendo cosas así?

Tras releer la descripción del reloj, digo SÍIIIIIII, y que sea lo que dios quiera...

Ufff me deja sin respiración la sola idea... retiro todo lo que dije de relojes sosos e inútiles, ¡son un campo de inspiración tremendo! si no fuera porque ni pajolera de flash, ya habría puesto 10... hay que ver...

Necesito ese reloj...

Responder
JMiur  

Buena pregunta. Descartemos una Ferrari Testarosa, un viaje a Tahití y cosas similares :D

Podríamos hablar de ... no sé, ¿un enlace destacado? Confiemos en la buena voluntad y en las ganas de colaborar :$

Establece las bases técnicas, formato, tamaño, donde enviarlo, ese tipo de detalles y vamos para adelante ... no hay nada que perder :D

Responder
elpops  

ufff muy buena opcion. men gracias...

lo que si me gustaria es hacer mi propio boton aleatorio...

saludos desde www.popista.blogspot.com

Responder
JMiur  

Pops: Se puede usar cualquier imagen.

Responder
La Blogueria  

Te tomo la palabra! me pongo a ello con mi lentitud habitual.

La sola idea me hace feliz :D

Responder
JMiur  

¡Adelante entonces! Aquí espero para lo que necesite :)

Responder
SebaContreras  

ese codigo podria mejorarse, cambiando:
var _yourBlogUrl = "URL_blog";
por:
var _yourBlogUrl = "http://" + document.domain;
asi quien usa el codigo se ahorra un poco de su tiempo, y si despues cambia la url de su blog, no se debe estar buscando el codigo para cambiarlo.

Responder
JMiur  

Tienes razón, Malina. He actualizado el post y la modificación que hay que hacer al script está marcada en amarillo.

Responder
JMiur  

Si me hubiera acordado que lo tenía ella, me habría ahorrado trabajo :D

Parece que es un problema reciente, algún cambio en la forma en que funcionan los feeds; como no lo uso, no lo había notado.

Responder
cpxondo  

Funciono de maravilla, muchas gracias!

Responder
JMiur  

Saludos, cpxondo.

Responder
Anónimo  

A mi no me funcionó :(
Y puse todo como debía... No entiendo :((

Responder
JMiur  

Puén no sé qué has hecho ni donde está tu ejemplo para decirte en qué te has equivocado.

Responder

¿Quiere dejar un comentario?

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

Nota: sólo los miembros de este blog pueden publicar comentarios.

Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.

Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...

 
CERRAR