Mostrar post expandibles (Peakaboo View)

Escrito originalmente por Ramani, en su blog Hackosphere. El ejemplo de su uso en este blog lo pueden ver aquí.

La página principal de tu blog generalmente muestra todo el contenido de cada unos de tus posts. Si estos son mayores a 2 párrafos, tus visitantes se verán en dificultades para encontrar rápidamente algún tema de interés para ellos dado que van a necesitar desplazarse hacia abajo en la página. Aquí es donde los post con resúmenes expandibles ayudaban en el viejo blogger. Este hack sirve al mismo propósito para el nuevo blogger y aún más! Esto es, la página principal sólo mostrara los resúmenes de los posts y cuando den click en "leer más", el post completo aparecerá en la página principal (vista Peekabo)!! He recibido algunas solicitudes para crear dicho hack y me las he arreglado para echarlo a andar. Más tarde, Hans lo mejoró agregando una liga para "Mostrar Resumen" con el cual se puede colapsar nuevamente un post expandido para mostrar sólo el resumen. Juntos, también hicimos que la liga "Leer Más" se mostrara únicamente para aquellos posts que tienen resumen. Este es un hack fantástico, pero necesitas tener cuidado al modificar tu template. Si no estás familiarizado con HTML, recomiendo de sobremanera que obtengas ayuda de alguien que lo conozca mientras aplicas este hack. Aquí están los pasos a seguir.

Paso 1.

Encuentra la etiqueta </head> en tu template y agrega todo el código que se muestra a continuación antes de ella.

<b:if cond='data:blog.pageType != "item"'>
<script type="text/javascript">

var fade = false;
function showFull(id) {
 var post = document.getElementById(id);
        var spans = post.getElementsByTagName('span');
        for (var i = 0; i &lt; spans.length; i++) {
             if (spans[i].id == "fullpost") {
                 if (fade) {
                    spans[i].style.background = peekaboo_bgcolor;
                    Effect.Appear(spans[i]);
                } else spans[i].style.display = 'inline';
             }
             if (spans[i].id == "showlink")
                 spans[i].style.display = 'none';
             if (spans[i].id == "hidelink")
                 spans[i].style.display = 'inline';
        }
}


function hideFull(id) {
 var post = document.getElementById(id);
        var spans = post.getElementsByTagName('span');
        for (var i = 0; i &lt; spans.length; i++) {
             if (spans[i].id == "fullpost") {
                 if (fade) {
                   spans[i].style.background = peekaboo_bgcolor;
                   Effect.Fade(spans[i]);
                 } else spans[i].style.display = 'none';
             }
             if (spans[i].id == "showlink")
                 spans[i].style.display = 'inline';
             if (spans[i].id == "hidelink")
                 spans[i].style.display = 'none';
        }
        post.scrollIntoView(true);
}

function checkFull(id) {
 var post = document.getElementById(id);
        var spans = post.getElementsByTagName('span');
        var found = 0;
        for (var i = 0; i &lt; spans.length; i++) {
             if (spans[i].id == "fullpost") {
                 spans[i].style.display = 'none';
                 found = 1;
             }
             if ((spans[i].id == "showlink") &amp;&amp; (found == 0))
                 spans[i].style.display = 'none';
        }
}

</script>
<style>
  #fullpost {
    display:none;
  }
</style>
</b:if>

N. de Tr. La imagen previa muestra la ruta para acceder al HTML del template. Considerar hacer un respaldo del template previo a su modificación, seleccionando la liga Download Full Template. Idealmente, a efectos de probar cambios que puedan alterar el diseño o funcionalidad de nuestro blog, crear un blog de prueba.

Paso 2

Encuentra el includable llamado 'post' y copia y pega los cambios mostrados en rojo de lo que se muestra a continuación (Debes tener mucho cuidado para evitar errores. Date cuenta que la palabra "uncustomized-post-template" puede no aparecer en tu template, pero no hay problema por ello.):

Para encontrar el Includable, puedes hacer una búsqueda por el término id="post". Si no te es posible encontrarlo, posiblemente no hayas expandido el template. Selecciona el checkbox con la etiqueta "Expand Widget Templates", que se encuentra justo arriba del código del template, para expandir este y mostrar más código.

N. de Tr. Para poder encontrar el Includable en el template será necesario palomear el checkbox con la leyenda Expand Widget Templates como se aprecia en la imagen. La ubicación dependerá de la plantilla que hayamos seleccionado para nuestro blog. La advertencia aplica para el caso mostrado en la imagen, lo que aplica es simplemente agregar lo que está en rojo e ignorar los códigos previos, que podrán variar de acuerdo a la plantilla de nuestro blog. De acuerdo a nuestras preferencias, podemos también cambiar las leyendas Read More y Summary Only para que indiquen lo que al gusto de cada quien convenga.

Paso 3

Selecciona la pestaña Settings->Formatting (Cofiguración/Formato), hecho lo cual encontrarás en la parte inferior un cuadro de texto para que especifíques el "Post Template" (Plantilla de entrada). Copia y pega estas líneas a dicho cuadro de texto y guarda la configuración. (Por favor NO las teclees tu mismo dado que pudiera se que se introduzcan algunos espacios que causen que la funcionalidad se pierda).

Escribe tu resumen aquí.
<span id="fullpost">
Escribe el resto de tu post aquí.
</span>

Ahora cada que crees un nuevo post, se te va a indicar claramente dónde debes escribir el resumen y dónde agregar el resto del post. Es importante asegurarse de que la etiqueta </span> mostrada arriba se encuentra al final de tu post. Para asegurar esto, utiliza la pestaña "Edit HTML" (Edición HTML) en lugar de la pestaña "Compose" (Componer) cuando escribar tu post. Después de teclearlo, puedes regresar al modo "Compose" y modificar la tipografía y colores. Cabe mencionar que también puedes dividir algunos (o todos) tus posts anteriores para que tengan un resumen, para lo cual tendrás que editarlos. La liga "Leer más" aparecerá sólo para aquéllos posts que se hayan dividido de esta manera.

N. de Tr. Se agregó imagen para mostrar donde se debe realizar el cambio.

Esto es lo que Ramani pide a cambio:

Si estás visitando mi blog por primera vez, no te pierdas de otras cosas interesantes que ofrezco:

  • Un blog de tipo Digg para compartir y promver tu blog - bvibes.com
  • Un template bastante rápido basado en AJAX - Neo

Notas Importantes:

  • Nota 1: Por favor no olvides agrear una liga a Hackosphere en tu sidebar. Eso es la única cosa que espero a cambio :)
  • Nota 2: Si quisieras incorporar algunos efectos especiales de aparecer/desaparecer para este hack, lo puedes tener incorporando unos cuantos cambios descritos en este otro post.
  • Nota 3. Si quisieras que la liga "Leer más" te llevara a la página del post en ligar de expandirlo en la página principal, utiliza este otro hack.
  • Nota 4. Si seleccionas la liga "Entradas anteriores", la liga "Leer más" pudiera aparecer aún para aquellos posts para los cuales no se ha incorporado el hack. Este es un problema conocido aún sin solución.

25 comments:

Pía dijo...

traté de seguir tus indicaciones, pero tuve 2 problemas. 1.- no encontré settings y formatting y 2.- al intentar guardar la plantilla señala un error con respecto a head

Tierra Santa dijo...

Hice todo y me resultó parcialmente, veo el link y el resumen pero el link no funciona y no me muestra el contenido completo
alguna idea?

am0x dijo...

@Pía
Settings es la segunda pestaña, al lado de la que se activa cuando creas un nuevo post (voy a actualizar el post con imágenes para clarificar). Del error, necesitaría conocer el texto para poder identificar la causa.
@Tierra Santa
Entré a tu blog y funciona, probablemente sea alguna opción del navegador que estás utilizando.

Lo ideal sería crear un nuevo blog de prueba para validar los cambios.

DIBUJO TECNICO UNEFM dijo...

Tengo la costumbre de agradecer a quienes me ayudan. Por eso les doy muchísimas gracias.

Además voy a dar unos pequeños tips para enriquecer estos consejos:

1.- Donde dice:"(Debes tener mucho cuidado para evitar errores. Date cuenta que la palabra "uncustomized-post-template" puede no aparecer en tu template, pero no hay problema por ello.):"
Yo le agregaría al final: "...pero no hay problema por ello simplemente no coloques esa línea de códigos.)"

2.- Donde dice Settings Formating al traducirlo es: Configuración -> Formato, y al final, está Plantilla de Entrada. (Para quienes no entienden la función de esto, tengan en cuenta que: Esto es simple y llanamente para que no tengas que reescribir estos códigos para cada entrada que hagas. Ojo, cuando escribas las nuevas entradas, hazlas en "edición html")

3.- Hay un paso que faltaría agregar, para ello es bueno seguir las indicaciones en: http://help.blogger.com/bin/answer.py?answer=42049

Saludos, Jan

Tomàs Mallafré dijo...

Después de mucho buscar, ha sido el primer sitio que he encontrado con una solución para no añadir el enlace a todos los post's, sino solamente a los que deben tenerlo.
¡Gracias!

GaBynette dijo...

Mil gracias!! Después de mil vueltas logré hacerlo...ahora loq ue no logro es cómo hacer para editar mis entradas anteriores...le agrego los respectivos spans, siguiendo tus pasos pero los post me quedan como si nada...cómo hago? Por otro lado me parece un cartelito que dice "read more" y mi blog es en español, cómo hago para cambiar esto?
Mil gracias de nuevo!

am0x dijo...

@Dibujo Técnico. Ya se incorporaron algunas de tus sugerecias como notas al post, gracias por contribuir.
@Tomás Mallafre. Que bien que funciona, gracias por la liga de vuelta.
@GaBynette. Se actualizó el post indicando donde se pueden modificar las leyendas. Para los posts previos, debiera funcionar, habría que asegurarse que los cambios se hacen en modo html.

Anónimo dijo...

si te mando mi plantilla me podrias decir donde tengo que modificar?

Anónimo dijo...

si te mando mi codigo podrias indicarme donde tengo que hacer los cambios porfa?

Voces del Ghetto dijo...

Pues estoy muy triste....no pude hacerlo por mas que lo intente...Lo bueno es que l intente en un blog de pruebas.

Te agradeceria mucho la ayuda =( ya que me interesa muchisimo.

Voces del Ghetto dijo...

Espero y sea posible que me puedas ayudar.... no puedo hacerlo.

Álvaro Sánchez dijo...

Hola, he intentado pegar el código. Lo pegue en su totalidad, pero me daba un fallo, fui quitando partes y probando, y se que la parte que me da fallo es la primera, todo lo del script. El error que me pone es el siguiente:

"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."

El codigo esta bien copiado, ya que es literal de aqui, y también de otras webs a las que les funciona este codigo. ¿A qué puede ser debido? El blog en cuestión es: http://blogdesuperheroesbeta.blogspot.com/

Gracias

am0x dijo...

@Álvaro Hice pruebas con un blog para tal fin y el asunto era debido a ciertos valores dentro el script (<,>,&) que no estaban "escapados" y causaban problemas con la plantilla. Ya se corrigió en el post, trata de copiar nuevamente lo del primer paso y debe ya funcionar.

Álvaro Sánchez dijo...

Gracias am0x ;)

Ahora tengo otra duda. Yo en mi blog tenía puesto que para ocultar el texto se usase span class="fullpost", y aquí se usa span id="fullpost", por lo que tendría que editar todas mis noticias. ¿Hay alguna forma de poner entradas ampliables que usen el class="fullpost"?? Espero que pueda ayudarme. Gracias.

am0x dijo...

@Álvaro. Sería cuestión de modificar el código javascript para considerarlo, en cuanto tenga un rato libre lo reviso y lo documento.

Luis Ini dijo...

Muchas gracias por la información. Me ha sido de mucha utilidad y he conseguido hacerlo de modo óptimo.
Un saludo.

MaD dijo...

wenas, mira, al copiar y pegar el codigo del paso 1, me tira error, pero no especifica cual es el error ni nada, simplemente me pide q lo reporte y q miraran de solucionarlo -.-''

weno, gracias de antemano.

saludos

am0x dijo...

@Luis. Qué bien, no hace mucho que se hicieron ajustes y los había validado en un blog de prueba, y que bueno que para otros funciona bien.
@mad. Intenta nuevamente, a veces ese error se presenta en blogger al hacer ciertas cosas y se resuelve intentando nuevamente. Recuerda intentar en un blog de prueba antes de liberarlo ya a tu blog en uso.

malgrat confidencial dijo...

hola am0x,

bueno, en primer lugar grácias por tus aportaciones. Luego comentarte que conseguí implementar el hack perfectamente, pero observé que con Explorer no funciona correctamente. Lo instalé con Mozilla, que sí funciona... no sé a que será debido...

si puedes hacer alguna averiguación te lo agradeceré.

un abrazo.

CJC - Joventut Comunista de Catalunya dijo...

en mi plnatilla no encuentro lo de includable...
alguna idea?

CJC - Joventut Comunista de Catalunya dijo...

pedon, ya encontré, no habia:
"Expand Widget Templates"

kazu dijo...

es cierto con firefosx da error y com moxila si funciona. ojala y puedas echar la mano en verdad que te estaria mu agradecido

Complejo Ameghino - Marín dijo...

GRACIAS !!!!!! Funciona y muy bien!!!!
Diana

Pan de Vida dijo...

Gracias

Segui tus indicaciones y funciona muy bien. Pero, tengo una pregunta.
Como puedo hacer eso com mis "post" anteriores.
Mil Gracias

bLuEsMaN dijo...

"malgrat confidencial said...
hola am0x,
bueno, en primer lugar grácias por tus aportaciones. Luego comentarte que conseguí implementar el hack perfectamente, pero observé que con Explorer no funciona correctamente. Lo instalé con Mozilla, que sí funciona... no sé a que será debido...
"

He utilizado este código de post expandibles en mis blogs. Como no suelo usar el explorer por casualidad me he dado cuenta hace poco que los usuarios de explorer no pueden ver la página principal porque el expandible hace dos cosas bajo explorer:
1- No permite cargar todas las entradas de la página principal
2- No permite cargar las columnas laterales cuando se visualizan varias entradas a la vez.

Yo no uso explorer pero hay mucha gente que todavía lo hace y no puede tener una visualización correcta por eso. Es una pena porque el desplegable es muy práctico, pero causa problemas serios a los usuarios del explorer.

¿Alguien sabría de alguna solución para que pudiese usarse con el internet explorer?

gracias y saludos

Publicar un comentario en la entrada

Todo vale, menos spam. Los comentarios son moderados para asegurar que yo los revise, así que puede pasar un tiempo entre que lo ingresen y que pueda yo entrar a verlos antes de publicarlos.