Me río yo de las "mejoras" de Blogger. Con eso de controlarnos los feeds han terminado por desbaratar la mitad de nuestros blogs. Y es que, acabo de darme cuenta de que tampoco me funciona el script de "Links a Epílogo"... así que he tenido que eliminarlo (encima, me daba error en la página, claro) :(
Menos mal que alguien se da cuenta del desbarajusta que Blogger ha montado e intenta poner remedio. Así, Phydeaux ha venido a salvarnos los Archivos-Calendario, modificando el segundo de los códigos (el script) del calendario, de forma que reconozca de forma automática la zona horaria del blog.
Así que, quienes tengáis zona horaria "positiva" (los europeos, por ejemplo: aquí, en España, tenemos ahora +2:00, por el horario de verano... tonterías de la CEE), sustituid el segundo código del calendario por el que sigue:
<!-- Blogger Archive Calendar -->
<script type='text/javascript'>
//<![CDATA[
var bcLoadingImage = "http://www2.blogger.com/img/spinner_white.gif";
var bcLoadingMessage = " Loading....";
var bcArchiveNavText = "View Archive";
var bcArchiveNavPrev = '◄';
var bcArchiveNavNext = '►';
var headDays = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var headInitial = ["Su","Mo","Tu","We","Th","Fr","Sa"];
// Nothing to configure past this point ----------------------------------
var timeOffset;
var bcBlogID;
var calMonth;
var calDay = 1;
var calYear;
var startIndex;
var callmth;
var bcNav = new Array ();
var bcList = new Array ();
//Initialize Fill Array
var fill = ["","31","28","31","30","31","30","31","31","30","31","30","31"];
function openStatus(){
document.getElementById('calLoadingStatus').style.display = 'block';
document.getElementById('calendarDisplay').innerHTML = '';
}
function closeStatus(){
document.getElementById('calLoadingStatus').style.display = 'none';
}
function bcLoadStatus(){
cls = document.getElementById('calLoadingStatus');
img = document.createElement('img');
img.src = bcLoadingImage;
img.style.verticalAlign = 'middle';
cls.appendChild(img);
txt = document.createTextNode(bcLoadingMessage);
cls.appendChild(txt);
}
function callArchive(mth,yr,nav){
// Check for Leap Years
if (((yr % 4 == 0) && (yr % 100 != 0)) || (yr % 400 == 0)) {
fill[2] = '29';
}
else {
fill[2] = '28';
}
calMonth = mth;
calYear = yr;
if(mth.charAt(0) == 0){
calMonth = mth.substring(1);
}
callmth = mth;
bcNavAll = document.getElementById('bcFootAll');
bcNavPrev = document.getElementById('bcFootPrev');
bcNavNext = document.getElementById('bcFootNext');
bcSelect = document.getElementById('bcSelection');
a = document.createElement('a');
at = document.createTextNode(bcArchiveNavText);
a.href = bcNav[nav];
a.appendChild(at);
bcNavAll.innerHTML = '';
bcNavAll.appendChild(a);
bcNavPrev.innerHTML = '';
bcNavNext.innerHTML = '';
if(nav < bcNav.length -1){
a = document.createElement('a');
a.innerHTML = bcArchiveNavPrev;
bcp = parseInt(nav,10) + 1;
a.href = bcNav[bcp];
a.title = 'Previous Archive';
prevSplit = bcList[bcp].split(',');
a.onclick = function(){bcSelect.options[bcp].selected = true;openStatus();callArchive(prevSplit[0],prevSplit[1],prevSplit[2]);return false;};
bcNavPrev.appendChild(a);
}
if(nav > 0){
a = document.createElement('a');
a.innerHTML = bcArchiveNavNext;
bcn = parseInt(nav,10) - 1;
a.href = bcNav[bcn];
a.title = 'Next Archive';
nextSplit = bcList[bcn].split(',');
a.onclick = function(){bcSelect.options[bcn].selected = true;openStatus();callArchive(nextSplit[0],nextSplit[1],nextSplit[2]);return false;};
bcNavNext.appendChild(a);
}
script = document.createElement('script');
script.src = 'http://www.blogger.com/feeds/'+bcBlogId+'/posts/summary?published-max='+calYear+'-'+callmth+'-'+fill[calMonth]+'T23%3A59%3A59'+timeOffset+'&published-min='+calYear+'-'+callmth+'-01T00%3A00%3A00'+timeOffset+'&max-results=100&orderby=published&alt=json-in-script&callback=cReadArchive';
document.getElementsByTagName('head')[0].appendChild(script);
}
function cReadArchive(root){
// Check for Leap Years
if (((calYear % 4 == 0) && (calYear % 100 != 0)) || (calYear % 400 == 0)) {
fill[2] = '29';
}
else {
fill[2] = '28';
}
closeStatus();
document.getElementById('lastRow').style.display = 'none';
calDis = document.getElementById('calendarDisplay');
var feed = root.feed;
var total = feed.openSearch$totalResults.$t;
var entries = feed.entry || [];
var fillDate = new Array();
var fillTitles = new Array();
fillTitles.length = 32;
var ul = document.createElement('ul');
ul.id = 'calendarUl';
for (var i = 0; i < feed.entry.length; ++i) {
var entry = feed.entry[i];
var link = entry.link[0].href;
var title = entry.title.$t;
var author = entry.author[0].name.$t;
var date = entry.published.$t;
var summary = entry.summary.$t;
isPublished = date.split('T')[0].split('-')[2];
if(isPublished.charAt(0) == '0'){
isPublished = isPublished.substring(1);
}
fillDate.push(isPublished);
if (fillTitles[isPublished]){
fillTitles[isPublished] = fillTitles[isPublished] + ' | ' + title;
}
else {
fillTitles[isPublished] = title;
}
li = document.createElement('li');
li.style.listType = 'none';
li.innerHTML = '<a href="'+link+'">'+title+'</a>';
ul.appendChild(li);
}
calDis.appendChild(ul);
var val1 = parseInt(calDay, 10)
var valxx = parseInt(calMonth, 10);
var val2 = valxx - 1;
var val3 = parseInt(calYear, 10);
var firstCalDay = new Date(val3,val2,1);
var val0 = firstCalDay.getDay();
startIndex = val0 + 1;
var dayCount = 1;
for (x =1; x < 38; x++){
var cell = document.getElementById('cell'+x);
if( x < startIndex){
cell.innerHTML = ' ';
cell.className = 'firstCell';
}
if( x >= startIndex){
cell.innerHTML = dayCount;
cell.className = 'filledCell';
for(p = 0; p < fillDate.length; p++){
if(dayCount == fillDate[p]){
if(fillDate[p].length == 1){
fillURL = '0'+fillDate[p];
}
else {
fillURL = fillDate[p];
}
cell.className = 'highlightCell';
cell.innerHTML = '<a href="/search?updated-max='+calYear+'-'+callmth+'-'+fillURL+'T23%3A59%3A59'+timeOffset+'&updated-min='+calYear+'-'+callmth+'-'+fillURL+'T00%3A00%3A00'+timeOffset+'" title="'+fillTitles[fillDate[p]].replace(/"/g,'\'')+'">'+dayCount+'</a>';
}
}
if( dayCount > fill[valxx]){
cell.innerHTML = ' ';
cell.className = 'emptyCell';
}
dayCount++;
}
}
visTotal = parseInt(startIndex) + parseInt(fill[valxx]) -1;
if(visTotal >35){
document.getElementById('lastRow').style.display = '';
}
}
function initCal(){
document.getElementById('blogger_calendar').style.display = 'block';
var bcInit = document.getElementById('bloggerCalendarList').getElementsByTagName('a');
var bcCount = document.getElementById('bloggerCalendarList').getElementsByTagName('li');
document.getElementById('bloggerCalendarList').style.display = 'none';
calHead = document.getElementById('bcHead');
tr = document.createElement('tr');
for(t = 0; t < 7; t++){
th = document.createElement('th');
th.abbr = headDays[t];
scope = 'col';
th.title = headDays[t];
th.innerHTML = headInitial[t];
tr.appendChild(th);
}
calHead.appendChild(tr);
for (x = 0; x <bcInit.length;x++){
var stripYear= bcInit[x].href.split('_')[0].split('/')[3];
var stripMonth = bcInit[x].href.split('_')[1];
bcList.push(stripMonth + ','+ stripYear + ',' + x);
bcNav.push(bcInit[x].href);
}
var sel = document.createElement('select');
sel.id = 'bcSelection';
sel.onchange = function(){var cSend = this.options[this.selectedIndex].value.split(',');openStatus();callArchive(cSend[0],cSend[1],cSend[2]);};
q = 0;
for (r = 0; r <bcList.length; r++){
var selText = bcInit[r].innerHTML;
var selCount = bcCount[r].innerHTML.split('> (')[1];
var selValue = bcList[r];
sel.options[q] = new Option(selText + ' ('+selCount,selValue);
q++
}
document.getElementById('bcaption').appendChild(sel);
var m = bcList[0].split(',')[0];
var y = bcList[0].split(',')[1];
callArchive(m,y,'0');
}
function timezoneSet(root){
var feed = root.feed;
var updated = feed.updated.$t;
var id = feed.id.$t;
bcBlogId = id.split('blog-')[1];
upLength = updated.length;
timeOffset = updated.substring(upLength-6,upLength);
timeOffset = encodeURIComponent(timeOffset);
}
//]]>
</script>
<script src='/feeds/posts/summary?max-results=0&alt=json-in-script&callback=timezoneSet'></script>
<!-- End Blogger Archive Calendar -->
Y ya está. No tenéis que cambiar ni tocar nada (a no ser para cambiar los nombres de la semana del inglés al español).
Es una pena que Moggy no haga algo parecido con su calendario Yahoo (aunque estoy convencida de que lo hará).
Para que funcione en mi blog, he tenido que "hacer trampa" en el código: cambiar la hora local de aquí por una horaria en negativo :( .... en fín: al menos funciona...
(Consultar: Calendario Blogger)
Hola soy Juan Carlos, editor del blog http://basketlacasilla.blogspot.com, y quisiera preguntarte, si has conseguido la forma de que debajo del calendario, no se vean todos los artículos publicados, por que si no se hace enorme de grande, es decir que se vea solo el calendario y que cada uno seleccione el mes y el día que desee ver. Yo he puesto uno de phydeaux3, queda muy bien, pero como te digo, me gustaria que los artículos de la parte inferior no salgan. ¿Sabes que código hay que tocar? Un saludo y muchas gracias.
ResponderEliminarHola, Juan Carlos:
ResponderEliminarPues... me temo que no. De hecho, Phydeaux tampoco consigue controlar este aspecto de su calendario.
Por ese motivo yo prefiero colocar el de Purple Moggy: puedes "esconder" los contenidos del mes entero y dejar desplegado sólo el de un día (generalmente, el de la última entrada).
He pasado por tu blog y he visto que, efectivamente, el calendario Phydeaux no le va bien por esa razón. Y es una pena, porque lo tienes todo muy guapo y ordenado.
El de Moggy funciona igual, con la salvedad de que puedes desplegar los contenidos del mes entero o sólo de un día; de forma que, estéticamente, te queda mejor.
Puedes echarle un vistazo, tanto al calendario como al código en Blogger Calendar Archive
Si quieres ver las instrucciones que yo coloqué en su día, las tienes en Calendario Yahoo ; y si te apetece ver cómo queda y funciona, puedes mirar en mi blog Revolutum
Ojalá que te venga bien la solución de cambiar el calendario.
¡Ah!... una cosa: el calendario de Moggy no funciona bien con la hora en "positivo" (como la tenemos en España). Como a mí me da igual eso de la hora, he colocado una zona horaria de -1, y así evito cualquier problema en el funcionamiento del calendario.
Si te decides a ponerlo en tu blog y para cualquier cosa, ya sabes: el Domingo me voy de vacaciones, pero en septiembre estoy de vuelta y encantada de respnderte, ¿vale?.
Saludos y que tengas unas muy buenas vacaciones :D
i
Hola, buen script sin duda aunque ahora creo que es mejor usar la vía de google calendar.
ResponderEliminarLa explico en mi web también: http://www.oscargp.net/2008/02/incrustar-calendario-en-una-pgina-web.html
Ajá... es otra posibilidad (de hecho, tengo uno en mi página de Google). El problema es qe es mucho menos dinámico que los de Moggy y Phydeaux y las posibilidades de "rediseño" más escasas.
ResponderEliminarPor eso he optado por las otras dos soluciones...
Un saludo.