Las páginas estáticas son algo que tiene un uso que se va extendiendo a lo largo del tiempo, sobre todo, porque las nuevas plantillas incluyen el gadget por defecto y justamente, ese gadget es el que genera confusiones y preguntas respecto a su personalización ya que suele ser confundido con un "menú normal" que puede ser personalizado libremente pero no lo es.Como todo gadget, posee un código rígido y una serie de reglas de estilo predefinidas por Blogger; si queremos modificar algo, deberíamos entender su estructura y sus limitaciones.
El primer problema a resolver es agregar enlaces que no sean páginas estáticas; eso es bastante simple y, aunque ya está explicado en alguna otra entrada, vuelvo a repetir la idea: hay que desplegar los artilugios de la plantilla y buscar el includable que lo contiene:
<b:widget id='PageList1' locked='false' title='Páginas' type='PageList'>
<ul>
<b:loop values='data:links' var='link'>
.......
</b:loop>
<li><a href='URL_1'>,vaga</a></li>
<li><a href='URL_2'>twitter</a></li>
</ul>Si los títulos de nuestras páginas, que es eso que vemos en el "menú", sólo tienen una palabra; podemos usar ese dato; si no es así, debemos recurrir a un script y como este sería el método más universal, vamos a verlo.
Lo que haré es modificar el loop completo de tal forma que quede así:
<ul id='listapaginas'>
<b:loop values='data:links' var='link'>
<b:if cond='data:link.isCurrentPage'>
<li><a class='selected' expr:href='data:link.href' id=''><data:link.title/></a></li>
<b:else/>
<li><a expr:href='data:link.href' id=''><data:link.title/></a></li>
</b:if>
</b:loop>
<li><a href='URL_sitio1' id=''> otro </a></li>
<li><a href='URL_sitio2' id=''> otro más </a></li>
</ul>
<script type='text/javascript'>agregarIDs();</script><script type='text/javascript'>
//<![CDATA[
function agregarIDs() {
var laclase;
var obj = document.getElementById("listapaginas");
var enlaces = obj.getElementsByTagName("a");
for (var i=0; i<enlaces.length; i++) {
enlaces[i].id="pagina" + String(i);
}
}
//]]>
</script>Como dije antes, si los títulos de las páginas sólo contienen una palabra, el script es innecesario y podemos usar ese texto como ID de los enlaces:
<li><a class='selected' expr:href='data:link.href' expr:id='data:link.title'><data:link.title/></a></li> <li><a expr:href='data:link.href' expr:id='data:link.title'><data:link.title/></a></li>
<style>
/* una imagen de fondo distinta par cada enlace */
#pagina0 {background: transparent url(IMAGEN_0) no-repeat 0 0;}
#pagina1 {background: transparent url(IMAGEN_1) no-repeat 0 0;}
#pagina2 {background: transparent url(IMAGEN_2) no-repeat 0 0;}
#pagina3 {background: transparent url(IMAGEN_3) no-repeat 0 0;}
#pagina4 {background: transparent url(IMAGEN_4) no-repeat 0 0;}
/* la etiqueta LI contenedora */
.PageList li {
/* sobrescribir las reglas de Blogger */
margin: 40px 0 20px !important;
padding: 0 !important;
/* las animamos un poco */
-moz-transition: all 1s;
-webkit-transition: all 1s;
-o-transition: all 1s;
-ms-transition: all 1s;
transition: all 1s;
}
/* los enlaces tienen una imagen de fondo y un texto */
.PageList li a {
color: #666;
display: inline-block;
font-family: Shadows Into Light Two,cursive;
font-size: 28px;
/* establecemos la dimensión */
height: 60px;
padding-bottom: 0;
padding-top: 110px;
width: 120px;
/* los animamos un poco */
-moz-transition: all 0.3s;
-webkit-transition: all 0.3s;
-o-transition: all 0.3s;
-ms-transition: all 0.3s;
transition: all 0.3s;
}
/* el efecto hover anima las cosas */
.PageList li a:hover {
color: #000;
font-size: 34px;
text-decoration: none;
/* invertimos la posición para que la imagen "baje" */
background-position: 0 bottom !important;
/* invertimos los padding para que el texto "suba" */
padding-top: 0;
padding-bottom: 110px;
}
/* la página atula se muestra "torcida" */
.PageList a.selected {
-moz-transform: rotate(-15deg);
-webkit-transform: rotate(-15deg);
-o-transform: rotate(-15deg);
-ms-transform: rotate(-15deg);
transform: rotate(-15deg);
}
/* y se endereza al poner el cursor encima */
.PageList a.selected:hover {
-moz-transform: rotate(0);
-webkit-transform: rotate(0);
-o-transform: rotate(0);
-ms-transform: rotate(0);
transform: rotate(0);
}
</style>






13 comentarios:
Genial, me guardo el post para personalizar mis páginas en cuanto tenga un poco de tiempo. Era algo que desde hace tiempo tengo pendiente en mi blog.
Saludos,
Marian
thanks for coding master :)
Muy interesante, sobre todo el condicional data:link.isCurrentPage...
Es posible que cambie el menú para usar esa variable...
P.D.: Ya implementé los comentarios anidados de Felipe, con mis propias variaciones. Funcionan de maravilla, gracias por hacerlo llegar a tanta gente, si no hubiera tardado mucho en enterarme ;)
Entiendo que el condicional data:link.isCurrentPage sólo funciona en ese gadget, es una pena pero, no es un dato accesible en otro lado.
A Felipe hay que levantarle una estatua por haber desarrolado ese sistema de comentarios :-)
A eso me refería, a cambiarlo por una lista de páginas ;)
Yo te apoyo en lo de la estatua
:D
Se ve muy tentador :P
No sabía de la existencia de <b:if cond='data:link.isCurrentPage'> veré qué puedo hacer con él :P
Que crack, tendré que probarlo, auque cada vez que toco...
J. recién leo esto. Queda fabuloso. A jugar, un abrazo.
Una abrazo, Adrián :D
Hola, me gustaría saber si habría alguna manera de igual que añadir una página más añadir una desplegable
No entiendo la pregunta.
¿Quiere dejar un comentario?
recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...
Todos los archivos y demos alojados en Fileden han sido redireccionados y deberían estar funcionando correctamente.
De todos modos, también puede accederse a ellos a través de SkyDrive
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 ...