JMiur [E]

Referencia: Blogger: la fecha de los posts


Este hack, lo que permite es colocar calendarios al estilo WordPress que reemplazan el texto de la fecha de las entradas por una imagen. El problema aquí se produce porque Blogger no coloca la fecha en todas las entradas; si un día tiene de una entrada, sólo la última tendrá fecha y, por lo tanto ese calendario no se verá.

Esto, dependiendo del tipo que usemos, no tendrá consecuencias pero, en muchos casos, lo que provoca es la aparición de un texto (UNDEFINED) o el desmadre de los títulos que ahora tienen más espacio y tratan de acomodarse como pueden.

El script original era el siguiente:
<script type="text/javascript">
//<![CDATA[
function calendario(cual){
var lafecha = cual.split('-');
fday = "<div class='caledia'>"+lafecha[0]+"</div>";
fmonth = "<div class='calemes'>"+lafecha[1]+"</div>";
fyear = "<div class='caleanio'>"+lafecha[2]+"</div>";
document.write(fmonth+fday);
}
//]]>
</script>
La solución es mostrar el calendario en cada post, sin importar si hay dos o más entradas en el mismo día. Para esto, es necesario saber la fecha, algo que Blogger no parece permitirnos así que lo que podemos hacer es decirle que recuerde la última fecha y, si la que tiene que colocar no existe, que use la anterior. Como la página se muestra en orden cronológico (el primer post mostrado es el último ingresado) las entradas que no tengan fecha corresponderán siempre al mismo día que la última que sí tuvo fecha.

¿Engorroso? No importa, el script debería cambiarse de esta manera:
<script type='text/javascript'>
//<![CDATA[
var ultimaFecha; // contendrá la última fecha

function calendario(cual) {
if (cual == "") {
cual = ultimaFecha; // Blogger no envia la fecha, usar la anterior
}
var lafecha = cual.split('-');
fday = "<div class='caledia'>"+lafecha[0]+"</div>";
fmonth = "<div class='calemes'>"+lafecha[1]+"</div>";
fyear = "<div class='caleanio'>"+lafecha[2]+"</div>";
document.write(fmonth+fday);
ultimaFecha = cual; // preservar la última fecha escrita
}
//]]>
</script>
De ahora en más, todos los posts tendrán fecha.

57 comentarios:

Anónimo  

Pero que bien, a mi me pasa siempre eso, como no tengo regularidad británica, a veces posteo en un solo dia todo lo que no he hecho en un mes :D
Cómo se haceee !! jejeje (clases plz)

Responder
JMiur  

Ya que el problema original lo vi en tu blog, te has ganado el premio y te enviaré un mail con la solución. De cualquier manera, bastaría cambiar un script por otro :D

Responder
Antonio Manfredi  

Pero donde coloco el script?? justo antes de el cierre ??? Gracias.

Responder
JMiur  

El script va en el encabezado de la página, por ejemplo, antes de la etqieueta </head>.

Para más detalles, fíjate en el artículo original.

Responder
Anónimo  

Saludos JMiur, aun no lo he logrado :p

mi duda es, en la primer parte habra que agregar algo más?

d = ultimaFecha; ????

o es todo? (la 'd' es porque he cambiado 'cual' a 'd')

Se ven las fechas normales en mi blog, pero no logro que los posts de los mismos días tengan fecha, solo el primero, en los demás sigue apareciendo solo la imagen del calendario. si me puedes ayudar... me avisas? :D

P.D. Cambie mi nick de Okrut por Opcionez

Responder
JMiur  

El primer paso, sería reubicar el script.

En este momento, está dentro del body y debería estar dentro del head, es decir, por encima de la etiqueta </head>

No necesariamente eso lo resolverá pero es imprescindicble.

En cuanto al código, lo que dices es cierto y, hasta donde puedo ver, es correcto.

Responder
Anónimo  

Ahí estaba antes, pero si lo pongo antes de </head> me aparece el tan mencionado error: Your template is invalid because the tag 'div' appears inside of the tag 'head'.

Seguiré viendo que puedo hacer.

Responder
JMiur  

Correcto; entonces, primero, debes reemplazar los símbolos < y >

cambias < por &lt;
y > por &gt;

fday = "&lt;div class='fecha_dia'&gt;"+da[0]+"&lt;/div&gt;";

fmonth = "&lt;div class='fecha_mes'&gt;"+da[1].slice(0,3)+"&lt;/div&gt;";

y colocarlo en el head.

Responder
Anónimo  

Pues he intentado varias cosas y aun no lo logro, ya está dentro del -head-, siempre aparece la imagen sola sin el numero ni el mes. solo el primer post aparece.

Crees que exista la manera de hacer que la imagen no aparezca cuando no exista la fecha, vi en Quien entra, ¡Vuelve! que resolvieron esto de esa manera, en los post del mismo día simplemente no aparece la imagen... Gracias de antemano ;)

Responder
JMiur  

Opcionez:

El script parece estar bien. Lo que veo online en tu blog es que, cuando la fecha "se repite", el script no se ejecuta. Eso, debe producirse por el lugar o la forma en que es llamada.

Esa parte es la que no puedo ver ya que es parte del código de la plantilla. Necesitaría ver el código original.

Responder
Anónimo  

Listo JMiur, te mande la plantilla a tu correo, En un tiempito que tengas le echas una ojeada :P

Gracias!

Opcionez

Responder
JMiur  

Por ahora no ha llegado. Te recomendaría enviarla otra vez porque es raro que demore tanto.

Responder
ayreonauta  

Hola, genio. Te molesto para ver si me ayudas con una cosa relacionada a este post:

No quiero usar el script para modificar la estética de la fecha, lo único que deseo es mostrar la fecha en todas las entradas, aún en las que se publicaron el mismo día. Imagino que se debe poder hacer, no entiendo por qué Blogger no lo permite. te agradezco de antemano. Saludos!

Responder
JMiur  

Es sencillo pero hay que usar JavaScript, por lo menos, no veo ninguna otra alternativa ya que Blogger es bastante misterioso en este tema.

Va a depender de las plantillas pero, generalmente hay algo así:

<b:if cond='data:post.dateHeader'>
<h2><data:post.dateHeader/></h2>
</b:if>

No importa si no es muy exacto, lo fundamnetal es que la fecha está en <data:post.dateHeader/>

Alli dice que si hay una fecha, se muestre. El problema es que cuando no la hay tampoco hay un dato que escribir, así que, siguiendo el mismo criterio que el calendario, podemos hacer que "recuerde" la ultima fecha. Si en un post no hay fecha, entonces, que use la anterior:

<b:if cond='data:post.dateHeader'>
<script>var ultimaFecha = '<data:post.dateHeader/>';</script>
<h2><data:post.dateHeader/></h2>
<b:else/>
<h2>
<script>document.write(ultimaFecha);</script>
</h2>

</b:if>

Responder
ayreonauta  

Graciaaas! Pequeños conocimientos como este te hacen grande. Un abrazo.

Responder
Xesc  

No consigo que esto (la fecha en todos los post de un mismo día) funcione en mi blog. ¿Podrías pegar un vistazo y decirme porqué?

Gracias.

Responder
JMiur  

Xesc:

Lo veo, el problema es que no puedo dar una respuesta exacta porque para eso debería ver la plantilla pero, como es un problema que he visto que otros blogs, te doy una idea. Si no funciona, comunicate por mail y vemos los detalles:

<b:if cond='data:post.dateHeader'>
<div class='calefecha'>
<script>calendario('<data:post.dateHeader/>');</script>
</div>
<b:else/>
<div class='calefecha'>
<script>calendario('');</script>
</div>
</b:if>

Responder
Xesc  

Probé la solución y funciona perfecto.

Mil gracias.

Responder
JMiur  

Me alegro Xesc :)

Responder
Shark_Bloody  

Hola, tengo un pequeño problema, pero que es importante, se trata del posicionamiento de la fecha, en la fecha del ultimo post publicado aparece en un lugar, pero en los que se publicaron antes aparece corrida para arriba unos cuantos pixeles, mi blog es Matacerebros
espero tu respuesta, gracias de antemano.

Responder
Alberth  

Cual es tu correo JMiur tengo problemas con la fecha, intente lo que escribistes pero no pude solucionarar el problema, te quiero mandar mi plantilla. mi correo es alberth164_4@hotmail.com

Responder
JMiur  

alberth: está en la sidebar vagabundia@gmail.com

Responder
Anónimo  

estaba mirando como poder poner la fecha en todos los post pero no entiendo como se hace me puedes echar una mano?

Responder
JMiur  

Tendría que mirar la plantilal para ver como está armada.

Responder
Anónimo  

Te la envio entonces y cuando puedas me la miras?

Responder
JMiur  

Si, no hay problema.

Responder
Patán  

Tengo aplicada una opción para ver las fechas en las entradas, pero no logro hacer que se vea en todas las entradas.

Responder
Patán  

Que podra ser que no logro qeu se vea en todas las entradas la fecha

Responder
JMiur  

Salvo que fuerces las cosas con un script, Blogger no mostrará las fechas en todas las entradas. Si hay varias el mismo día, sólo muestra una.

Responder
Patán  

Pero en el caso qeu se pudiera, me podrias guaiar como hacerlo

Responder
JMiur  

La forma que hacerlo es usando el scrpt de este mismo post. En todo caso, empieza con este otro para ver si el problema es el mismo.

Responder
Anónimo  

Jmiur no he podido colocarlo aun devido a que me sale esto:La plantilla no es válida porque la etiqueta "div" aparece dentro de la etiqueta "head".te agradezco de antemano tu ayuda

Responder
JMiur  

ubbalho:

Podría ser un problema de los DIVS que aparecen en el script ya que no veo otros en tu blog.

He corregido eso en los scripts del posts, verás que se agrega:
//<![CDATA[
y
//]]>
y de esa manera se evita ese problema pero, si el error persiste, envíame la plantilla por si hay algo que online no logre distinguir.

Responder
Anónimo  

Hola JMuir, bueno voy con esto ahora. Veremos qué sucede en mis plantillas, ya que las originales ya vienen son un ícono (que yo quité). Y estoy sin fechas desde que recomencé. Si luego de 8 horas no lo logro...:D

Si pude gracias a vos con los comentarios, debemos poder con esto.

Ah... desde ayer Blogger ha decidido que mi blog de pruebas -donde guardaba todo lo que me has enseñado- y todos los códigos; es SPAM. Imposibilidad absoluta de ingresar al mismo hasta "que ellos decidan".

No puedo creerlo........... (o más bien, si)

Un beso, me voy con esta info a (nuevo blog de pruebas)

Responder
Anónimo  

Con este código y todo el post anterior porsupu - a eso me refería-porque el tema es que yo no quiero imagen.
Me gustaría que quedaran en negro lo más parecidas a las tuyas. Espacio hay, es más, se nota en mis blogs el vacío que hay antes de cada título.

Bueno, me voy.
;-)

Responder
JMiur  

Mar:
Lo que veo en tus blogs es que el script de las fechas es inaccasible
http://myblogtalk.com/bloggertemplates/zanblue/jdate.js
404 - PAGE NOT FOUND

Al margen de eso, un detalle que veo es que estás cargando dos veces algunos scripts. Como usas el API de Google para cargar Prototype y Scriptaculous. Deberías quitara todos esos scripts que la cargan y que estan en SkyDrive:

prototype.js
scriptaculous.js ?load=effects
effects.js
lightwindow.js
lightwindow.css

Incluso lightwindow.js y lightwindow.css están repetidos, quitarlos mejorará el tiempo de carga y evitará problemas futuros. Sólo deja los que están debajo del API, los de arriba son innecesarios.

Responder
Anónimo  

Hola, JMiur, ese código lo acabo de quitar, con otro que está expandiendo artilugios...
pero sólo logro ver la primera de las fechas y en pruebas, que de ayer tengo sólo dos posts, en la de abajo no sale.

Esa parte de código que marcás para último cambio (intento a ver si me la toma)
-bueno va más o menos-


b:if cond=data:post.dateHeader

Yo no la tengo en la plantilla
es por eso?


(ya ordeno mis plantillas, ya las ordeno!)

Responder
JMiur  

Mar, acabo de ver tu mail y lo he contestado. Empecemos por esa parte que es la configuración de la fecha.

Responder
Anónimo  

Estaba escribiéndote aquí! Lo logré! No me preguntes cómo pero le gane a esa bendita plantilla !

No ha quedado como lo deseaba, pero, hay fecha en todos los posts.

No quité los ojos de mis códigos, ni de dos posts tuyos al mismo tiempo, perdón, ni vi que entró correo.

Acabo de pasarlo a itinerarios. Cuántas horas fueron?
(hoy no trabajaba)


Ya te leo!

Responder
Anónimo  

Está mal que haya dicho "no me preguntes cómo". Si no hubiese estado con tus posts horas no lo lograba. Siempre termino dejando las preguntas aquí y las gracias te las doy por mail y no me parece justo.

Recién igual. De modo que vuelvo y dejo las gracias aquí.

Un beso

Responder
JMiur  

Me alegro que haya quedado resuelto, Mar. Me gustas ese esfuerzo, e muy reconfortante :D

Responder
Roudy Capella  

JMiur, la fecha con el calendario no aparecian en todas las entradas, gracias a este post lo solucione, cuando estaba a punto de enviarte un correo. Como utilizo una imagen de calendario no aparecia el año bajo la imagen lo solucione modificando:
document.write(fmonth+fday);
por
document.write(fmonth+fday+fyear);

Gracias.

Responder
JMiur  

Perfecto, Roudy. Me alegro que fuera útlil :D

Responder
Chus  

Genial, este post y el otro al que hace referencia me han venido perfectos para hacer lo que llevaba mucho tiempo queriendo hacer en nuestro blog (http://vadereirse.blogspot.com/) y eso que aún no le he metido la imagen del calendario. Con todo lo que explicas he podido ir resolviendo los problemillas y dejarlo todo a mi gusto. Muchas gracias :)

Responder
JMiur  

Me alegro que sirviera, Chus :D

Responder
egoloco  

Fijate la fecha de este comentario... fijate la hora de este comentario, después de tu último mail, después de saltar de post en post, éste lo había leido miles de veces, y sabés qué? suelo leer los comentarios por si en alguno encuentro consejos adicionales, pero creo que me "saltié" uno en especial. El comentario Nº17 de ésta entrada me orientó a la solución. Gracias TOTALES!!!

Responder
Analía Alvado  

He leído con atención hasta el comentario 46… sinceramente, nada tiene desperdicio. Tanto la entrada como los comentarios hacen de la lectura un verdadero placer. Todos son del equipo Vagabundia. FELICITACIONES :D

Responder
JMiur  

¡Que paciencia! :D

Responder
Prof. Cristian E. Moyano  

JMiur ya debes haber escuchado un montón de veces este problema, pero no consigo que se vean las fechas en todos los post..jeje ya me parece gracioso decirlo porque ya está quemado, x lo q no me esfuerzo en explicarte más mi problema, sólo te pregunto que debo hacer? ya stoy frustrado de intentar varias soluciones sin éxito..:(

Responder
JMiur  

Fíjaete en esta entrada porque hay problemas con las fechas. O en esta otra que es la forma que me parece más cómoda de resolver el asunot y es la que estoy usando ahora.

Responder
J@gg3r  

Un saludo, y el deseo de un excelente año.
JMiur quería hacerte una consulta, blogger cambio el formato de fechas para el encabezado de cada post (entrada) existía el que era algo así ene, 10,09 ó ene/10/09 el problema es que esas dos formas ya no existen en blogger y mi imagen para que la fecha se vea como calendario no admite el mes completo y ahora en el mes solo puedo ponerle el numero, donde iba el mes (abreviado) ejemplo (ene) así era antes a (enero) el cual es ahora. Mi pregunta es: Si hay una forma, script o algo para poder cambiar el formato que establece Blogger? Para
De antemano agradezco tu gentil Ayuda.

Responder
JMiur  

A ver si entendí. Ahora, lo que ves es el número del mes y no el texto porque ya no existe la opción anterior.

Si esto es así, fíjate si lo que está en esta entrada te sirve. No puedo escribirla toda acá pero, es la parte de:
// LAS FECHAS DE LOS POSTS

En tu script, antes de:

function calendario(cual) {

deberias colocar la lista de meses:

var mes=new Array();
mes[1]="ene"; mes[2]="feb"; ...

y luego, en lugar de mostrar el mes con:
lafecha[1]

lo muestras con algo así:

mes[lafecha[0]]

Fíjate y si no me mandas un mail con el script actual y lo vemos.

Responder
J@gg3r  

:)JMiur un saludo!
Gracias por tu rápida respuesta, ya te he enviado la plantilla y la imagen como se ve actualmente el calendario,

Responder
JMiur  

Lo acabo de contestar, hay un error en el script, te envié la corrección. Colócala y vemos.

Responder
J@gg3r  

Ya he cambiado el script que me mandaste y como en el post lo puse antes /head de igual manera el script de la imagen del calendario lo puse antes de /b:skin y sigue sin verse el día ni el mes, solo la imagen del calendario.

Un saludo.

Responder
J@gg3r  

:)Esta hecho, en el script que me mandaste, solo era cambiar en la parte final (fday+fmonth+fyear) por (fmonth+fday+fyear) cual lo hizo egoloco ;) mirando en su comentario, me dio la idea y así lo hice y ya funciona.
Agradezco mil JMiur tu ayuda y paciencia y aquí seguiremos aprendiendo más de este mundo del Blog.
Se me olvidaba,,,, gracias egoloco
Un Saludo!

Responder
JMiur  

Tienes razón, no me di cuenta que el orden dia/mes estaba invertido :D M ealegra que se resolviera.

Responder

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

 
CERRAR