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>
<a href="javascript:randomPost();"> TEXTO/IMAGEN </a>
21 comentarios:
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
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
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!!!
¿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?
Pues no iba con intención de chinchar... :D y confieso que... errhh..estoy "diseñando" un relojito... ehhrr... para mi blog...
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
¡¡¡cóóóómooo!!!???
¡¡QUIERO UNO ASÍÍÍÍÍÍ!!!
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
¡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...
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
ufff muy buena opcion. men gracias...
lo que si me gustaria es hacer mi propio boton aleatorio...
saludos desde www.popista.blogspot.com
Pops: Se puede usar cualquier imagen.
Te tomo la palabra! me pongo a ello con mi lentitud habitual.
La sola idea me hace feliz :D
¡Adelante entonces! Aquí espero para lo que necesite :)
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.
Tienes razón, Malina. He actualizado el post y la modificación que hay que hacer al script está marcada en amarillo.
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.
Funciono de maravilla, muchas gracias!
Saludos, cpxondo.
A mi no me funcionó :(
Y puse todo como debía... No entiendo :((
Puén no sé qué has hecho ni donde está tu ejemplo para decirte en qué te has equivocado.
¿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 ...