Una página estática no es otra cosa que una entrada atemporal, está fuera del orden cronológico y suelen usarse para agregar información adicional; por ejemplo, la página About que tanto vemos, el formulario para contactos, índices diversos o incluso el blogroll.
Es cierto que tenemos fomas de simular ese tipo de página ya sea personalizando ciertos posts de tal manera que no parezcan entradas, creando blogs auxiliares pero, no es lo mismo.
Hace mucho, descargué un ZIP con un demo donde se mostraba una alternativa para crear páginas estáticas en Blogger. Lamentablemente, no encuentro la página original pero, de cualquier manera, el demo incluye la página con las explicaciones. Su autor es Haochi Chen de Googlified y él mismo lo dice: "no es una gran solución pero funciona"
Yo disiento con eso, creo que es una buena idea aunque no es sencilla de aplicar si no se tienen conocimientos elementales de JavaScript pero, de todas formas, es un punto de partida para experimentar.
Para implementarlo, he cambiado algunos detalles de tal manera que podamos emplear la menor cantidad de archivos externos. De todas maneras, ciertas cosas deberán adaptarse a la estructura de cada plantilla así que hay que hacerlo con cuidado.
Veamos. Lo primero que necesitamos es el script cuyo contenido se encuentra en este archivo. Allí, debemos cambiar y verificar algunas cosas así que vamos a la plantilla y lo agregaremos al final, justo antes de </body>. Si tenemos agregados otros scripts al final de la plantilla como Google Analytics o Twitter, convendría que lo pusiéramos antes de estos. No, la explicación no es muy precisa pero diría que lo ideal sería buscar el último </div> de la plantilla y agregarlo justo allí debajo.
Como hay que hacerle alguna modificación para adaptarlo a cada sitio, vamos a ver el código:
<script type='text/javascript'>
//<![CDATA[
// esta función escribe el script que cargará la página estática
function get(url) {
var script = document.createElement("script");
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', url);
document.body.appendChild(script);
}
// función creada por Dieter Raber de http://dieterraber.net
function readGet() {
var _GET = new Array();
var uriStr = window.location.href.replace(/&/g, '&');
var paraArr, paraSplit;
if(uriStr.indexOf('?') > -1){
var uriArr = uriStr.split('?');
var paraStr = uriArr[1];
} else {
return _GET;
}
if(paraStr.indexOf('&') > -1) {
paraArr = paraStr.split('&');
} else {
paraArr = new Array(paraStr);
}
for(var i = 0; i < paraArr.length; i++) {
paraArr[i] = paraArr[i].indexOf('=') > -1 ? paraArr[i] : paraArr[i] + '=';
paraSplit = paraArr[i].split('=');
_GET[paraSplit[0]] = decodeURI(paraSplit[1].replace(/\+/g, ' '));
}
return _GET;
}
// es la función que "escribe" la página estática y debemos editar
function page() {
elHTML = '<div class="post">';
elHTML += '<h3 class="post-title"><a href="http://miSitio.blogspot.com/?page=';
elHTML += tituloPE.toLowerCase();
elHTML += '">' + tituloPE + '</a></h3>';
elHTML += '<div class="post-body"><p>' + contenidoPE + '</p>';
elHTML += '<div style="clear: both;"></div>';
elHTML += '</div></div>';
document.getElementById('main').innerHTML = elHTML;
document.getElementById('main').style.display = 'block';
}
// las variables
var _GET = readGet(); // crea la URL
var ifPAGE = false; // TRUE si estamos mirando una página estática
var tituloPE = ''; // el título de la página estática
var contenidoPE = ''; // el contenido de la página estática
// cargamos las diferentes páginas
switch(_GET['page']) {
case 'paginaEstatica-1': // ejemplo 1
get('URL_paginaEstatica1.txt');
ifPAGE = true;
break
case 'paginaEstatica-2': // ejemplo 2
get('URL_paginaEstatica2.txt');
ifPAGE = true;
break
default:
}
// ejecutar y mostrar la página
if (ifPAGE == true) {
window.onload = function(){
page();
}
}
//]]>
</script>
<b:section class='main' id='main' showaddelement='no'>
<b:widget id='Blog1' locked='true' title='Entradas del blog' type='Blog'>
.......
<b:includable id='post' var='post'>
<div class='post uncustomized-post-template'>
.......
<h3 class='post-title'> ....... </h3>
.......
<div class='post-body'>
.......
<div style='clear: both;'/>
</div>
</div>
</b:includable>
.......
</b:widget>
</b:section>
El esquema para agregar una página es este:
case 'nombrePaginaEstatica':
get('URL_paginaEstatica.txt');
ifPAGE = true;
break
URL_paginaEstatica.txt es la dirección URL del archivo de texto con el contenido de esa página que habremos subido a algún servidor
Cada página que creemos, deberá tener ese esquema y el nombrePaginaEstatica deberá ser único.
Ufff, suena engorroso; ya saben ahora por qué lo tuve tantos meses guardado pero, vale la pena seguir adelante. Paciencia.
Hasta aquí, tenemos el script. Podemos guardar la plantilla y, si no cometimos errores de sintaxis, el blog no sufrirá cambios; nada será distinto de lo que era. Ahora, debemos continuar y lo lógico, sería crear las páginas estáticas.
Esas páginas, originalmente eran archivos JS pero, como es más sencillo alojar archivos TXT, lo mejor es hacerlos así. Tienen sólo dos partes, dos variables, en una va el título que se mostrará y en la otra el contenido que es código HTML.
Cada página deberá tener algo así:
var tituloPE = 'EL TITULO A MOSTRAR';
var contenidoPE = 'EL CONTENIDO A MOSTRAR';
¿Cómo creamos ese contenido? Con cualquier editor, incluyendo el de Blogger. Basta escribir y copiar el código HTML donde deberemos agregar manualmente los saltos de línea; es decir, si queremos que algo se muestre en una línea distinta, agregamos <br/> y si queremos dejar una línea en blanco, agregamos <br/><br/> o bien podemos colocar los párrafos entre etiquetas <p> y </p>.
¿Funcionará cualquier código? En principio sí pero, habrá que probar. Este es un ejemplo de un archivo TXT
Ahora ya está completo y lo único que falta es colocar el enlace donde nos guste, utilizando esta sintaxis:
<a href="?page=nombrePaginaEstatica">ENLACE</a>
case 'about':
get('http://vagabundia.bolsanegra.net/jsBLOG/about.txt');
ifPAGE = true;
break
<a href="?page=about">CLICK PARA VER</a>
case 'demoPage1':
get('URL_demoPAGE1.txt');
ifPAGE = true;
break
case 'demoPage2':
get('URL_demoPAGE2.txt');
ifPAGE = true;
break
<a href='?page=demoPage1'>DEMO-1</a>
<a href='?page=demoPage2'>DEMO-2</a>
Como lo que hace el script es "re-escribir" la página donde nos encontremos eliminando parte de su contenido y lo reemplaza por el contenido del archivo de texto, la ubicamos al final y la ejecutamos cuando está cargada. Para reemplazar algo, primero debe existir ese "algo".
Esto, produce una situación indeseada, primero se nos mostrará una cosa y luego, cambiará y se nos mostrará otra.
Para disimular ese efecto, agregaremos un pequeño script justo antes de </head>, leeremos la URL de la página que se mostrará y si detectamos que en ella se encuentran los caracteres ?page significa que será una página estática así que, temporalmente, ocultaremos el DIV main y sólo lo mostraremos cuando ya esté terminado el reemplazo:
<script type='text/javascript'>
// <![CDATA[
var uriStr = window.location.href.replace(/&/g, '&');
if(uriStr.indexOf('?page') > -1){
document.write('<style>#main{display:none;}</style>')
}
// ]]>
</script>
Se crean dinámicamente pero son enlaces normales por lo tanto, también son accesibles desde otra página web así que esas páginas, también podrían ser abiertas desde acá:
0 comentarios:
Publicar un comentario