Sólo debemos agregar un elemento HTML en nuestra plantilla y allí pegar el siguiente código:
<div id="random-posts">
<script type="text/javascript">
function getRandomPosts(json) {
var maxEntries = 10;
var numPosts = json.feed.openSearch$totalResults.$t;
var indexPosts = new Array();
for (var i = 0; i < numPosts; ++i) { indexPosts[i] = i; }
indexPosts.sort(function() {return 0.5 - Math.random()});
if (maxEntries > numPosts) { maxEntries = numPosts; }
var container = document.getElementById('random-posts');
var ul = document.createElement('ul');
for (i = 0; i < maxEntries; ++i) {
var entry = json.feed.entry[indexPosts[i]];
var li = document.createElement('li');
var a = document.createElement('a');
a.title = entry.title.$t;
for (var j = 0; j < entry.link.length; ++j) {
if (entry.link[j].rel == 'alternate') {
a.href = entry.link[j].href;
break;
}
}
a.appendChild(document.createTextNode(entry.title.$t));
li.appendChild(a);
ul.appendChild(li);
}
container.appendChild(ul);
}
</script>
<script src="http:/miBlog.blogspot.com/feeds/posts/summary?alt=json-in-script&callback=getRandomPosts&max-results=999" type="text/javascript"></script>
</div>
El resultado, será una lista (UL LI) que tomará el aspecto de cualquier otra lista que tengamos y que, puede ser personalizada si agregamos definiciones en el CSS de nuestra plantilla; por ejemplo:
#random-posts {
/* este es el rectángulo donde se mostrará */
}
#random-posts ul { /* la lista */
list-style-type: none;
margin: 0 10px;
}
#random-posts li {
/* los items de esa lista */
}
#random-posts a { /* cada item es un enlace con el título de la entrada */
background: transparent url(unaImagen) no-repeat 5px 50%;
border-bottom: 1px solid #202931;
border-top: 1px solid #202931;
display: block;
font-weight: normal;
height: 16px;
line-height: 16px;
padding: 3px 5px 2px 20px;
}
#random-posts a:hover { /* efecto hover de esos enlaces */
background-color: #101921;
border-bottom: 1px solid #303941;
border-top: 1px solid #303941;
}
33 comentarios:
Muchas gracias! Voy a implementarlo ;)
Saludos, amigo JMiur!
Realmente muy útil, JMiur existe la posibilidad de ordenar las entradas de manera que siempre se vea la más antigua como primera?
Suerte con eso, Pepiche :)
Jared: No sabría responderte; imagino que si pero, habría que rehacer todo el script.
Otra consulta JMiur, tengo un problema con uno de mis blogs, cada vez que presiono el botón de 'leer más' dentro de las entradas, me lleva a otro lado, no hacia la entrada en cuestión.
El link es http://goo.gl/nRqA
Jared:
Es algo ue n ose ve en la plantilla. En realidad, no te envia a cualquier sitio sino que todo el div con los posts no se muestra (blog-posts) , ni siqueira está oculto. Probablemente, algún condicional mal implementado.
muchas gracias JMiur.. a cambiar la plantilla se ha dicho xD
Suerte con eso :)
Buenas Jmiur, ¿Cómo puedo poner un guión ("-")justo delante de cada título de las entradas?.
Gracias. Un saludo
Simplemente escribiéndolo pero, mucho cuidado porque la URL de las entradas se forma con el título así que, primero lo publicas sin guines, luego, lo editas y le cambias el título. La URL no cambiará.
Creo que no me he explicado bien. Lo que yo quiero es que el guión aparezca justo delante de cada uno de los títulos que aparecerá en ese listado de entradas. Es decir:
- Ejemplo de título 1.
- Ejemplo de título 2.
- Ejemplo de título 3.
...
Gracias por responder. No sé si al final he conseguido explicarme. Un saludo
¿En el script? No sé, tal vez, cambiando esto:
a.appendChild(document.createTextNode(entry.title.$t));
por esto:
var ntitulo = "- " + entry.title.$t;
a.appendChild(document.createTextNode(ntitulo));
Wuauuuu!!
Así es. Muchas gracías de nuevo.
Un saludo
No me funciona ??
Porque la URL es errónea, dice:
http:/www.cargohedescargas.com/feeds/comments/summary
debería ser:
http://
ya y nada no sale nada
Si se trata de eso llamado Post Aleatorios, ahi lo veo.
aveces sale y aveces no, es raro.
Gracias
Vaya, este post tuyo se me escapó cuando lo publicaste y lo he visto ahora.
Gracias por la referencia, pero tengo que aclarar que el truco no es mío. Lo que ocurre es que no recuerdo dónde lo ví y por eso no puse la fuente. Sólo recuerdo que lo leí en inglés. Al César lo que es del César.
Saludos
Por la referencia, nada, ni se menciona :)
La aclaración de la autoría, vale. Siempre hay quien le busca la pata al gato en estas cosas. En lo personal, no me preocupa porque sé quién es quién (o lo intuyo) :D
Gracias Jmiur, me funciona perfecto.
El tema es que mi pregunta original es como hacer que esto mismo se vea solo en las entradas particulares, ocupando el lugar que normalmente ocupan las entradas relacionadas.
Haciendo lo mismo que con los psots relacionados, por ejemplo, colocándol oen el footer de cada entrada y condicionándolo de este modo:
<b:if cond='data:blog.pageType == "item"'>
........ aqui el DIV y el SCRIPT
</b:if>
No funciona... me pone: No se ha podido analizar su plantilla, porque no está bien formada. Asegúrese de que todos los elementos XML se han cerrado correctamente.
Mensaje de error de XML: The content of elements must consist of well-formed character data or markup. :S :(
SI va directamente en la plantilla, cambia los símbolos & por &
<script src="http:/miBlog.blogspot.com/feeds/posts/summary?alt=json-in-script&callback=getRandomPosts&max-results=999" type="text/javascript"></script>
Gracias por el widget. Desde hace tiempo habia estado buscando algo así, y que pudiera agregarlo a mi blog usando mis poquísimos conocimientos de HTML.
Saludos.
¿Existe alguna forma de que las entradas que se muestran se correspondan con una etiqueta (o etiquetas) determinada? Es decir, que si yo tuviera, por ejemplo, 3 etiquetas, se mostraran entradas de sólo dos de esas etiquetas, bien escogiendo cuáles mostrar, bien cuál no se mostraría. ¿Alguna idea de qué modificar en el código para lograr algo así?
(Gracias.)
Podría ser, tal vez, rehaciendo el script pero no sabría decirte cómo.
En los comentarios de la entrada original de Oloman encontré cómo hacer para que salgan entradas de una etiqueta concreta (sustituyendo en el código http://NOMBRE_DE_TU_BLOG.blogspot.com/feeds/posts/summary por http://NOMBRE_DE_TU_BLOG.blogspot.com/feeds/posts/default/-/ETIQUETA). Ahora tendré que seguir investigando a ver si encuentro a partir de aquí la forma de añadir la url de más etiquetas o hacer que no se muestre una en concreto...
hola tengo una duda: existe alguna forma de hacer que al abrir el blog el visitante vea una entrada aleatoria? es decir que al entrar a "miblog.blospot.com" lo lleve a una entrada diferente cada vez que ingresa al blog sin necesidad de de dar click en algun enlace? me explico? es decir que no tenga que dar click en "entra aleatoria" sino qeu con el simple hecho de entrar al blog siempre le saldra una entrada diferente? se puede?
Tal vez redireccionando la página con JavaScript pero es algo que no recomendaria en absoluto ¿Para qué hacer semejante cosa?
una pregunta, para que se muestren entradas con una etiqueta determinada, por ejemplo si he creado 10 entradas con etiqueta noticias, otras 5 entradas con otra etiqueta, lo que me interessa es que en la pagina principal del blog solo me salgan las entradas con la etiqueta noticias, nose si me he explicado.
Saludos, Mayer
El resultado de hacer sería un poco incrolable aunque puede hacerse. Deberías tratar de ver como funciona el LOOP de Blogger y cómo adaptarlo porque no hay una condición que permita hacer eso y no hay una respuesa genérica; dependerá de como está armada cada plantilla. Es engorroso pero posible.
hola... como hago para ponerla en el post-footer como entradas relacionadas??? Gracias...
Colocando el DIV random-posts allí, donde quieras que se vea.
¿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 ...