Pues sí, el título me ha quedado un poco en plan trabalenguas, pero es que mis neuronas andan ya muy quemadas últimamente. La cuestión es que el sistema de Blogger hace algo un poco peculiar con las entradas que tienen la misma fecha y eso a veces nos da problemas para poder manejar bien el aspecto de las entradas.
Esto ocurre en páginas de navegación o en la de Inicio y sobre todo cuando queremos montar algún sistema de sumarios y darle estilo a cada uno de ellos.
Pero empecemos viendo un ejemplo para ver qué es lo que pasa.
La estructura de una página de Inicio con tres posts de los cuales los dos primeros tienen la misma fecha, sería como en este esquema (se han nombrado las clases según vienen de serie en las plantillas estándar):
Como veis, una vez que se inicia el bucle que va mostrando las entradas dentro de la clase general blog-posts, Blogger genera una caja para cada fecha (date-outer). Dentro de cada una pone una única cabecera con la fecha común (h2.date-header) y a continuación las distintas entradas de esa fecha bajo la clase post-outer. Aquí ya irá el titulo del post y el contenido del mismo de manera individual.
Ahora supongamos que monto un sistema de sumarios y quiero que las entradas me queden dentro de un borde y por ejemplo un fondo contrastado para poder distinguir fácilmente dónde empieza uno y dónde el siguiente. En un principio no hay mucho problema porque normalmente esas propiedades están en la clase .date-outer (en caso contrario las podemos añadir nosotros) y todas quedarán con ese formato tanto en Inicio como en los posts individuales.
Pero el problema viene cuando publicamos más de una vez al día y Blogger nos agrupa las entradas bajo la misma fecha. Entonces nuestro diseño de sumarios independendientes ya no lo serían tanto:
Podríamos intentar aplicar esos mismos estilos a .post-outer, pero el trabajo sería baldío porque sólo conseguiríamos sacar la fecha fuera del estilo y casi lo mismo ocurriría si probamos con .date-posts.
En fin, que en algunos casos es una lata esto de la agrupación, pero sabiendo dónde se genera el asunto podemos modificar un poco nuestra plantilla para cambiar eso y obtener este otro esquema:
El trozo de código que nos interesa es sólo visible seleccionando Expandir plantillas de artilugios. Sería este y lo que habría que hacer sería insertar lo que está marcado en rojo.
<b:loop values='data:posts' var='post'> <b:if cond='data:blog.pageType == "index"'> <b:if cond='data:post.isFirstPost == "false"'> </div></div> </b:if> <div class="date-outer"> <h2 class='date-header'><span><data:post.dateHeader/></span></h2> <div class="date-posts"> <b:else/> <b:if cond='data:post.isDateStart'> <b:if cond='data:post.isFirstPost == "false"'> </div></div> </b:if> </b:if> <b:if cond='data:post.isDateStart'> <div class="date-outer"> </b:if> <b:if cond='data:post.dateHeader'> <h2 class='date-header'><span><data:post.dateHeader/></span></h2> </b:if> <b:if cond='data:post.isDateStart'> <div class="date-posts"> </b:if> </b:if> <div class='post-outer'> <b:include data='post' name='post'/> <b:if cond='data:blog.pageType == "static_page"'> <b:include data='post' name='comment_picker'/> </b:if> <b:if cond='data:blog.pageType == "item"'> <b:include data='post' name='comment_picker'/> </b:if> </div> <b:if cond='data:post.includeAd'> <b:if cond='data:post.isFirstPost'> <data:defaultAdEnd/> <b:else/> <data:adEnd/> </b:if> <div class='inline-ad'> <data:adCode/> </div> <data:adStart/> </b:if> </b:loop>
No es un equívoco mío que las aperturas y cierres de algunas etiquetas salgan arriba como < y > respectivamente. Es necesario hacerlo así para que el editor no nos de un error de estructura y nos permita grabar los cambios sin papeletas.
Por ser esta una parte muy importante del código de todas las plantillas, antes de probar te sugiero que reconsideres esa costumbre de no hacer copias de seguridad de vez en cuando ;)
Pues ya está, ya hemos conseguido una estructura HTML que nos permite separar todos los posts aunque algunos tengan fechas coincidentes. Ahora podremos configurar el estilo de las entradas tanto desde .date-outer como desde .date-posts o .post-outer si no nos interesa englobar también la fecha.
Hice el esquema de colores porque pienso que se ve más claro, pero esto mismo traducido en código real supone pasar de lo que muestra la primera captura a lo que se ve en la segunda. El color blanco representa cada entrada, ya que he usado para las marcas rectangulares a la izquierda los mismos colores que en el susodicho esquema.
¿Alguien se percató de que sigue saliendo sólo una vez la fecha cuando hay más de un posts por día? Bien, así me gusta, que estéis atentos.
Lo que ocurre es que Blogger guarda la fecha de cada post, pero sólo la recupera para el primero de los que tienen la misma. Pero esa es otra historia que ya vimos hace tiempo y que tiene también fácil solución.
¿Vemos otro post al azar por si le encuentras utilidad o quizás prefieres ser más metódico y suscribirte a nuestras entradas por correo? También puedes imprimir este artículo y por supuesto compartirlo en redes sociales si fue de tu agrado.
Vaya, hace tiempo que estaba esperando una explicación así Oloman. También he tenido ligeras molestias por estas cuestiones de la fecha. Ahora probaré los cambios y espero no tenga mayor inconveniente. Como siempre, gracias.
ResponderEliminarLo que yo me di cuenta es que blogger ahora tambien hace aparecer las fechas con etiquetas de numeros, por ejemplo en este blog de peliculas online con la etiqueta "2012", las entradas aparecen con este url: http://www.cinezito.com/search/label/2012 (cosa normal)
ResponderEliminarpero tambien aparecen sin el "/search/label/" , es decir de esta forma:
http://www.cinezito.com/2012
Revisen sus etiquetas con numeros o años por decirlo asi.
Bueno, no exactamente y me parece que eso ha ocurrido siempre. Cuando pones la segunda forma lo que te muestra son todos los posts publicados en 2012 y no sólo los de esa etiqueta. Compruébalo con una peli de 2011 pero sobre la que hayas publicado en 2012. Te debería salir ;)
Eliminardonde se cierra el primer loop?
ResponderEliminarEn la etiqueta que ves como </b:loop> Lo que ocurre es que no se me quedó el código bien alineado, pero si te das cuenta el if está cerrado justo antes.
EliminarMe encantaría algo parecido, pero con etiquetas. Agrupar post en la página principal por etiquetas y no por fecha ¿se podrá?
ResponderEliminarEso es algo más que un cambio de estructura. Pienso que se podría hacer si quitáramos las entradas de la página principal mediante una condición y luego añadimos unos gadgets especiales que precisamente sólo se verían en la página principal. Esa es la idea, pero no te puedo concretar el código necesario.
EliminarSi, me parece que habría que cambiar a fondo la plantilla. Es algo largo y cansado eso. Seguramente algún día los que viven de hacer plantillas lo harán :P
EliminarYo como debo ocuparme más en el contenido, lo dejaré para los ratos libres jaja Saludos y un abrazo.
Tú y todos. Antes contenido que continente ;)
EliminarQuizás es porque marqué en rojo la primera línea y esa hay que dejarla como estaba, no hay que añadir un segundo LOOP.
ResponderEliminarHola, gracias por tus tutoriales siempre me ayudan, tengo una consulta: tengo un blog con solo 4 entradas(quiero que así quede) y lo que quisiera es saber como puedo hacer para que la fecha que aparece siempre se encuentre actual? lo hago manualmente editando las entradas pero quisiera poder usar una condicional o algo para que se actualice automáticamente, me ayudarías?
ResponderEliminarBueno, lo mejor sería que ocultaras las fechas que la plantilla muestra y que en su lugar pusieras un pequeño javascript que mostrara la fecha del día.
EliminarHola Oloman te tengo en favoritos, aunque llevo 2 días leyéndote, eres muy útil, mi consulta es: Tengo una entrada en mi blog, pone cojines corazón vale, cada vez que haga un cojín con esa forma lo quiero subir a esa misma entrada, pero al modificarla o editarla, me viene la misma fecha en que creé la entrada por primera vez,a mi me gustaría que al entrar en esa entrada venga separados la fecha y la entrada de cada post que subo. Aunque sea en la misma entrada, no se si me explico. Mi blog es http://miscosturascaprichosas.blogspot.com.es y si entras es lo primero que sale porque la entrada la acabo de subir ahora y la fecha viene del dia 17. Espero tu respuesta, Mil GRACIAS
ResponderEliminarPara eso que quieres no es práctico un blog, porque esto viene a ser como una lista de artículos ordenados (inversamente) por fecha de publicación. Podrías cambiar la fecha de nuevo cada vez que lo editas (cada vez que incluyes nuevos cojines) sin problemas, poniendo la del día actual. Pero ¿por qué no creas simplemente nuevas entradas cada vez que quieres mostrar uno nuevo?
EliminarSi es del mismo tipo que otros, pues creas una etiqueta. Cualquiera que quiera ver todos los "Cojines corazón" verá todas esas entradas de una vez. Pincha en una de las que tienes bajo el título de mi blog si no sabes muy bien de que estoy hablando y fíjate que todos los que salen tienen un tema (etiqueta) en común, la que seleccionaste.
Muchas gracias Oloman, pero... navegando por tu blog, ya había encontrado la respuesta, y estoy haciendo y aprendiendo muchas cosas contigo, ya he cambiado bastante mi blog, gracias por compartir tus conocimientos.
EliminarExcelente. Muchísimas gracias.
ResponderEliminarOtra vez estoy aquí, muy buenas. Pues ahora es para otro blog que estoy haciendome. Y no me sale nada del codigo este, no se donde poner lo que sale en rojo, ya que mi estructura no es igual. Porfe ayuda quiero desagruparlos. Es para cristinaysuscositas.blogspot.com.es Gracias
ResponderEliminarLo primero es comentarte que si no vas a publicar más de un post por fecha, esto no te hace falta. Lo segundo es que para ver esa estructura, tendrás que pinchar en "Expandir plantillas de artilugios". Lo tercero... lo veremos si esas dos anteriores no son suficientes ;)
EliminarEso no tiene nada que ver con este truco. Tiene que ver con esto:
ResponderEliminar.main-inner {
padding-top: 30px;
}
No es molestia pero ¿al final tenía que ver o no? :)
ResponderEliminarGracias :)
ResponderEliminarGenial!! Me ha ido de maravilla este post!! Eres un crack!
ResponderEliminarorale me sirvio mucho gracias =)
ResponderEliminarjeje disculpa otra cosa.. el unico detalle es que no sale la fecha en los posts arreglados ... solo sale en el primero de dicha fecha ... saludos =)
ResponderEliminarEs un detalle a mi parecer menor, pues con que lleve la fecha el primero de la tanda pienso que es suficiente. De todas formas, si quieres recuperarla tendrás que acoplar a ese mismo código este otro
EliminarExcelente, es lo que andaba buscando y funcionó maravillosamente. Gracias Oloman.
ResponderEliminarHola Oloman,
ResponderEliminarNo sé si verás este comentario, porque la entrada es de hace un tiempecillo pero por si acaso, una preguntilla: he conseguido separar las entradas tal y como señalas pero... antes del título de cada una me sale una línea, la que hacía de separación entre una entrada y otra cuando salían agrupadas, ¿me podrías decir cómo se quita?
Muchísimas gracias adelantadas y por el post y el blog, son de gran ayuda ;)
No veo esa línea que dices actualmente Casala. Supongo que ya lo solucionaste ¿no?
EliminarHola, Oloman,
ResponderEliminarPerdona, que he estado fuera u no te he podido contestar.
Sí, conseguí solucionarlo (y juraría que te había avisado... :s).
Muchas gracias por preocuparte.
Saludos.
Muchas gracias por la informacion. Pero tengo un problema. Antes de colocar esta rutina puse la de que me mostrase la fecha en todas las entradas, aunque fuera del mismo dia. Al añadir esta lo que me hace es que separa las entradas que son del mismo dia, pero no me muestra la fecha
ResponderEliminarSí Miguel Angel. Este código tal cual no contempla lo de la fecha, pero puedes añadir el otro que viste a este y lo solucionas.
EliminarMe quedó fantástico! Mil gracias...
ResponderEliminarUn problema que crei nadie se molestaria en explicar y resolver, Oloblogger un grande
ResponderEliminarBueno, es que este asunto me resultaba muy molesto para diversos trucos, así que sí, efectivmente, me "molesté" en resolverlo ;)
EliminarHola, como aplica esto al nuevo panel de blogger? Soy novato y no se como resolverlo, ya que la explicacion tiene un par de añitos... gracias!
ResponderEliminarAunque haya pasado tiempo la cosa se hace e la misma manera Sergio, editando la plantilla. Lo que ocurre seguramente es que tendrás una plantilla de las del Nuevo Diseñador o una de las Dinámicas. Con esas este truco no se puede aplicar.
Eliminar