JMiur [E]

Hay varias entradas bastante viejas (el reloj de la web es particularmente cruel y todo es viejo en cinco minutos) donde se explican diferentes métodos para mostrar entradas relacionadas en Blogger [1] [2] [3]

Muchos otros emplean LinkWithin que es un sistema externo que permite agregar un gadget para diferentes plataformas y es un método muy usado porque se ha puesto de moda y también porque muestra un imagen junto con el título y el enlace: Ver detalles en El escaparate de Rosa [1] [2]

Como no me gustan las modas ni los servicios externos, vamos a ver una forma de transformar el método original que mostraba una lista con los títulos y los enlaces de las entradas relacionadas para que sea similar al otro y se le añadan las miniaturas de las entradas.

Para eso, basta seguir con la idea de lo explicado en las entradas que hablaban de JSON y de la forma en que podemos acceder a los diferentes datos de los feeds de nuestro blog. Uno de ellos es justamente ese, la miniatura (si es que existe una imagen en el post) así que bastaría modificar aquellos scripts originales para leer más datos y luego, cambiar la forma en que son mostradas.

Repaso el tema de los posts relacionados.

Tiene tres partes; la primera es el script en si mismo y que agregamos a la plantilla antes de </head>:
<script type='text/javascript'>
//<![CDATA[
  ... acá pegamos el contenido del archivo de texto ...
//]]>
</script>
Allì sólo es necesario establecer los datos personales:

var relmaxamostrar = 4; // cantidad de entradas a ser mostradas
var relmaxlen = 100; // la cantidad de caracteres de los resumenes
var relimagenpodefecto = "URL_imagen"; // la imagen por defecto

Las otras dos partes requieren desplegar los artilugios de la plantilla. Buscamos el código donde se muestran las etiquetas en el footer de cada entrada y allí agregamos lo indicado en color:
<b:loop values='data:post.labels' var='label'>
  <a expr:href='data:label.url' rel='tag'><data:label.name/></a>
  <b:if cond='data:label.isLast != "true"'>,</b:if>
  <b:if cond='data:blog.pageType == &quot;item&quot;'>
<script expr:src='&quot;/feeds/posts/default/-/&quot; + data:label.name + &quot;?alt=json-in-script&amp;callback=leerpostetiquetas&amp;max-results=50&quot;' type='text/javascript'/> </b:if> </b:loop>
Eso, condicionará el llamado a JSON para que sólo funcione en las entradas individuales y leerá los feeds de las etiquetas de nuestro blog.

callback=leerpostetiquetas es la función de JavaScript que se ejecutará e interpretará esos datos
max-results=50 es la cantidad de datos a leer y puede ser cualquier número pero, siempre debe tenerse en cuenta que si el número es muy alto, el proceso será más largo y por lo tanto, la carga del blog será más lenta

El tercer paso es decidir donde vamos a mostrarlo. Normalmente, debajo de las entradas así que deberemos buscarlo y eso no es fácil de explicar porque depende de cada plantilla pero, por ejemplo, podemos intentar encontrar alguno de los DIVs donde se muestran el autor, la fecha, los botones para compartir, etc que suelen estar en algo así:
<div class='post-footer-line post-footer-line-X'>
  .......
</div>
Agregamos entonces otro DIV que también condicionamos:
<b:if cond='data:blog.pageType == &quot;item&quot;'>
  <div class='post-footer-line post-footer-line-4'>
    <div id='postsrelacionados'>
      <script type='text/javascript'>mostrarrelacionados();</script>
    </div>
    <div style='clear:both;'/>
  </div>
</b:if>
Eso es todo, faltará claro, el CSS que es personal y agregamos junto con el resto, entre <b:skin> y </b:skin> o bien, tambien lo podemos condicionar y poner antes de </head>. Ver/Ocultar [+]


Para quien quiera personalizar un poco las cosas, veamos si es posible explicar el funcionamiento de los scripts y las posibles variantes. Ver/Ocultar [+]
¿Será esto mas fácil que agregar un gadget pre-diseñado? No, claro que no pero, algunos nos resistimos a eso de hacer click-click-click y preferimos el estilo "fatto in casa" porque el exceso de clicks genera callos en el dedo índice y también en las neuronas.

229 comentarios:

primera página12última página
UltimateDD hace 12 años  

ahora me sale undefined,ocupo una plantilla fantástico que facilita blogger,alguien tiene una que ya tengo agregado este truco??..


salu2!!

JMiur hace 12 años  

Como dije. Sin ver el ejemplo. Imposible decir nada más.

Responder
UltimateDD hace 12 años  

gracias por la respuesta, este es el blog.

http://todoupload.blogspot.com/


salu2!!

JMiur hace 12 años  

No veo dónde está agregado.

UltimateDD hace 12 años  

ahora si, justo la cambie algo y restablecí la plantilla.Ojala me puedas ayudar .


salu2!!

JMiur hace 12 años  

Es que está colocando los scripts al revés. Primero, está la función mostrarrelacionados() y luego el script que lee los feeds así que, cuando se ejecuta la función, aún no se han elido y por lo tanto, no hay nada que mostrar.

El script que lee los feeds debe estar antes.

Responder
UltimateDD hace 12 años  

Ahora logre que salieran las miniaturas, pero todas salen en vertical.Creo que mi problema esta en donde colocar el tercer paso.Se supone que tengo que poner un "div" pero no se donde??..

div class='post-footer-line post-footer-line-X

Yo lo coloque debajo de este.

div class='post-footer-line post-footer-line-3 "Entre estos dos puse el tercer paso tal cual, pero no se si le tengo que colocar algo mas,o no va aqui??"span class='post-author vcard'


gracias por la ayuda.


salu2!!

JMiur hace 12 años  

Estás colocando el CSS condicionado dentro de <b:skin&gt </b:skin&gt con las etiquetas <style&gt y </style> incluidas y por lo tanto no se aplican las reglas.

Todo esto, colócalo antes de </head>

<b:if cond='data:blog.pageType == &amp,quot;item&amp,quot;'>
<style>
..................
</style>
</b:if>

UltimateDD hace 12 años  

jajaja ahora si, uta de dos días tratando,soy mas duro .Por fin funciono,una pregunta para que quede como el ejemplo , tengo que modificar algo de el css??..


Gracias por tu paciencia .

JMiur hace 12 años  

Sí, para personalizarlo, se debe hacer en el CSS y eso ya es algo personal, depende de lo que quieras.

UltimateDD hace 12 años  

me gustaría que quedara con esos puntitos, y el marco de la imagen que tienes.Trate y no salio, mas se hecho a perder...jaja.


salu2!!

JMiur hace 12 años  

Los puntitos del texto son el borde de la etiqueta P

.relsposts p {
.......
border-bottom: 1px dotted #AAA;
border-top: 1px dotted #AAA;
}

Eventualmente, debe aumentar la altura del DIV:
.relsposts {
.......
height: OTROVALORpx;
}

EL borde de la imagen puede ser un borde, un color de fondo, bordes redondeados, sombras; todo eso va en:

.relsposts img { }

ejemplos:

border-radius: 5px;
box-shadow: 0 0 10px #AAA inset;
border:1px solid #AAA;

son decenas de variantes.

Responder
Nathaly Habich hace 12 años  

No encuentro el script de json donde está?

JMiur hace 12 años  

Explícate ¿qué buscas y dónde buscas?

Responder
5dstark hace 12 años  

Hola, el post me ayudo bastante, solamente que he notado que en algunas entradas a veces la entrada que estoy viendo esta en las recomendaciones,
y esto es en entradas ya sea con muchas o con pocas etiquetas.

¿Sabes como lo puedo solucionar?

Mi blog es "Milky Kawaii Songs"

JMiur hace 12 años  

El script contempla eso:

if (relurls[r] != dirURL) {
// si el post no es el que estamos viendo, lo mostramos

el valor dirURL es el el documento o sea la pagina y no se muestra:
var dirURL = document.URL;

el problema puede surgir cuando el sitio tiene una url que usa prefijos por país; en ese caso, ambos datos jamás coincidirán.

Responder
Adolfo Fernandez Penayo hace 11 años  

Hola Jmiur. Sabes como puedo utilizar ese widget de entradas relacionadas que tienes en el sidebar?. Veo que el widget es parecido al de navegar etiquetas, pero imagino que no sera el mismo. He buscado bastante pero no encuentro algo igual. Gracias desde ya.

JMiur hace 11 años  

Eso está explicado en esta otra entrada

Responder
Yurika-Chan hace 11 años  

JMiur tengo una duda, la imagen que muestra en la miniatura, al redimensionarla se deforma, hay forma que la imagen que muestre sea una parte de la imagen, y no que la redimensione?

JMiur hace 11 años  

No sé exactamente a qué te refieres; la imagen si está alojada en Blogger, puede cambiarse y usar otros tamaños. Mira la respuesta en este comentario

Yurika-Chan hace 11 años  

Perfecto, eso era lo que quería JMiur, funcionó de maravillas, muchas gracias por tomarte la molestia de ayudarme

Responder
José L. Bravo hace 11 años  

Exactamente cómo se agregaría esto para cambiar el tamaño de las imagenes:

relimagen[r] = relimagen[r].replace('s-72c','s100-c');

En qué parte y en qué orden. Gracias.

JMiur hace 11 años  

En el script, relimagen[r] sólo está una vez así que, simplemente, en lugar de escribir:

relimagen[r]

escribes:

relimagen[r].replace('s-72c','s100-c')

Responder
Tutor de programación hace 11 años  

Gracias por la ayuda, sirvió de mucho.

Responder
videovirales hace 11 años  

Hola, funciona para otros sitios que no sean blogger o wordpress?

JMiur hace 11 años  

Este script sólo es para Blogger. En otros sistemas debe adaptarse en función de la estructura de datos que posea.

Responder
Staff hace 10 años  

Hola. En donde dice: Tiene tres partes; la primera es el script en si mismo que es el que puede descargarse completo en este archivo de texto.

No puedo ver el archivo, me marca error, sería tan amble de decirme en donde puuedo verlo o descargarlo.
Gracias.

Responder
primera página12última página
 
CERRAR