

Navidad 2010 |
CSS: Simplificar, complicar, optimizar |
body{background-color:#343F4A;color:#CCC;font-family:'Trebuchet MS', Trebuchet, Helvetica, Arial, Verdana, Sans-Serif;font-size:12px;margin:0;min-width:920px;padding:0;text-align:center}.clear{clear:both;line-height:0;height:0}#navbar-iframe{height:0;visibility:hidden;display:none}a,a:visited,a:link{color:#AAA;outline:none;text-decoration:underline}a:hover{color:#FFF;outline:none}a img{border:none;outline:none;text-decoration:none}object{outline:none}h1,h2,h3,h4,h5,h6{font-family:'Trebuchet Ms', Helvetica, Arial, sans-serif;margin:10px 0}a { /* esto es un error */
color: #AAA
outline: none
text-decoration:underline
}
a { /* esto está bien aunque la utima no tenga punto y coma */
color: #AAA;
outline: none;
text-decoration: underline
}
a { /* esto está bien */
color: #AAA;
outline: none;
text-decoration: underline;
}div { /* esto es un error porque entre el cierre del paréntesis y la palabra no-repeat falta un espacio */
background: #AAA url()no-repeat left top;
}
div { /* esto está bien aunque no haya espacio entre los dos puntos y el color */
background:#AAA url() no-repeat left top;
}
div { /* esto está bien */
background: #AAA url() no-repeat left top;
}div { /* esto es un error */
<!-- comentario comentario comentario >
background: #AAA url()no-repeat left top;
}
div { /* esto está bien */
/* comentario comentario comentario */
background:#AAA url() no-repeat left top;
}
YouTube: Botones y widget de suscripción |

<iframe src="http://www.youtube.com/subscribe_widget?p=nombre_usuario?" style="overflow: hidden; height: 97px; width: 300px; border: 0;" scrolling="no" frameBorder="0" marginwidth="0" marginheight="0" allowtransparency="true" align="middle"></iframe>
Posts relacionados con miniaturas usando Json |
[1] [2]<script type='text/javascript'> //<![CDATA[ ... acá pegamos el contenido del archivo de texto ... //]]> </script>
<b:loop values='data:post.labels' var='label'> <a expr:href='data:label.url' rel='tag'><data:label.name/></a> <b:if cond='data:label.isLast != "true"'>,</b:if> <b:if cond='data:blog.pageType == "item"'>
<script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&callback=leerpostetiquetas&max-results=50"' type='text/javascript'/> </b:if> </b:loop>
<div class='post-footer-line post-footer-line-X'>
.......
</div><b:if cond='data:blog.pageType == "item"'>
<div class='post-footer-line post-footer-line-4'>
<div id='postsrelacionados'>
<script type='text/javascript'>mostrarrelacionados();</script>
</div>
<div style='clear:both;'/>
</div>
</b:if><b:if cond='data:blog.pageType == "item"'>
<style>
.relsposts {
float: left;
margin: 0 5px;
overflow: hidden;
padding: 5px;
text-align: center;
/* el tamaño dependerá de como diseñemos el contenido */
width: 130px;
height: 180px;
}
.relsposts:hover { /* si queremos algún efecto */ }
.relsposts a {
/* las propiedades de los textos, color, fuente, etc */
color: #EEE;
display: inline;
font-size: 11px;
line-height: 1;
}
.relsposts img {
/* las propiedades de las miniaturas */
height: 72px;
padding: 5px;
width: 72px;
}
.relsposts h6 {
/* las propiedades del título */
display: table-cell;
height: 5em;
margin: 5px 0 0;
overflow: hidden;
padding-bottom: 2px;
vertical-align: middle;
width: 130px;
}
.relsposts p {
/* las propiedades de los resúmenes */
color: #AAA;
font-size: 10px;
height: 4em;
line-height: 1;
margin: 5px 0 0;
overflow: hidden;
padding: 5px 0;
text-align: left;
}
</style>
</b:if>
// empieza definiendo una serie de datos var reltitulos = new Array(); var relurls = new Array(); var relresumen = new Array(); var relimagen = new Array(); var reltituloscantidad = 0; // establecemos la cantidad de entradas relacioandas a ser mostradas var relmaxamostrar = 4; // establecemos la longitud de los resúmenes var relmaxlen = 100; // establecemos la imagen por defecto a utilizar var relimagenpodefecto = "URL_imagen"; // esta es la función que lee los feeds y guarda esos datos que luego analizaremos y mostraremos function leerpostetiquetas(json) { var entry, postimg, postcontent, cat; for (var i = 0; i < json.feed.entry.length; i++) { // los datos de cada entrada se guardan en la variable entry entry = json.feed.entry[i]; // como puede ser que no haya tantas entradas como solicitamos, si ya no hay más, terminamos if (i==json.feed.entry.length) { break; } // el título de la entrada lo leemos leyendo entry.title.$t reltitulos[reltituloscantidad] = entry.title.$t; // lo guardamos // buscamos el contenido de la entrada que puede estar completa o no postcontent = ""; if ("content" in entry) { postcontent = entry.content.$t; // el contenido HTML de la entrada con un feed completo } else if ("summary" in entry) { postcontent = entry.summary.$t; // el contenido HTML de la entrada con feed corto } // usamos una función para eliminar el código HTML y crear un resumen con una cantidad de caracteres relresumen[reltituloscantidad] = eliminattags(postcontent,relmaxlen); // buscamos la miniatura de la imagen de la entrada if ("media$thumbnail" in entry) { postimg = entry.media$thumbnail.url; // si hay una imagen la guardamos } else { // si no hay una imagen, usaremos una imagen por defecto postimg = relimagenpodefecto; // podríamos establecer diferentes imágenes por defecto para cada etiqueta } relimagen[reltituloscantidad] = postimg; // buscamos la dirección URL de la entrada ya que hay varias // una contiene la URL del blog, otra la de la entrada, otra la de los archivos adjuntos, etc for (var k = 0; k < entry.link.length; k++) { if (entry.link[k].rel == 'alternate') { relurls[reltituloscantidad] = entry.link[k].href; // esta es la url así que la guardamos break; } } reltituloscantidad++; // vamos contando cuantas entradas se encontraron } } // esta es la función que mostrará las entradas relacionadas function mostrarrelacionados() { // la primera parte es similar a la usada hasta ahora y sólo agregamos los nuevos datos, el resumen y la imagen // como una entrada puede tener varias etiquetas, eliminamos los duplicados var tmp = new Array(0); var tmp2 = new Array(0); var tmp3 = new Array(0); var tmp4 = new Array(0); for(var i = 0; i < relurls.length; i++) { if(!contains(tmp, relurls[i])) { tmp.length += 1; tmp[tmp.length - 1] = relurls[i]; tmp2.length += 1; tmp2[tmp2.length - 1] = reltitulos[i]; tmp3.length += 1; tmp3[tmp3.length - 1] = relresumen[i]; tmp4.length += 1; tmp4[tmp4.length - 1] = relimagen[i]; } } reltitulos = tmp2; relurls = tmp; relresumen = tmp3; relimagen = tmp4; // los mezclamos para que no se muestre siempre los mismos for(var i = 0; i < reltitulos.length; i++){ var indice = Math.floor((reltitulos.length - 1) * Math.random()); var tempTitle = reltitulos[i]; var tempUrls = relurls[i]; var tempResumen = relresumen[i]; var tempImagen = relimagen[i]; reltitulos[i] = reltitulos[indice]; relurls[i] = relurls[indice]; relresumen[i] = relresumen[indice]; relimagen[i] = relimagen[indice]; reltitulos[indice] = tempTitle; relurls[indice] = tempUrls; relresumen[indice] = tempResumen; relimagen[indice] = tempImagen; } // y ahora vamos a mostrarlos var cuantosPosts = 0; var r = Math.floor((reltitulos.length - 1) * Math.random()); // elegimos un post al azar var rini = r; // este es el primer post relacionado a mostrar var salida; var dirURL = document.URL; // hacemos un bucle hasta que encontramos la cantidad definida en relmaxamostrar // y vamos armando el código HTML while (cuantosPosts < relmaxamostrar) { if (relurls[r] != dirURL) { // si el post no es el que estamos viendo, lo mostramos salida = "<div class='relsposts'>"; salida += "<a href='" + relurls[r] + "' rel='nofollow' target='_blank' title='" + reltitulos[r] + "'><img src='" + relimagen[r] + "' /></a>"; salida += "<h6><a href='" + relurls[r] + "' target='_blank'>" + reltitulos[r] + "</a></h6>"; salida += "<p>" + relresumen[r] + " ... </p>"; salida += "</div>"; document.write(salida); // y vamos contando hasta llegar al total cuantosPosts++; if (cuantosPosts == relmaxamostrar) { break; } } if (r < reltitulos.length - 1) { // habiamos empezado desde cualquier parte de la lista y este es el siguiente post r++; } else { // si es el último, empezamos desde el primero de la lista r = 0; } // si ya dimos toda la vuelta en al lista y no encontramos la cantidad, significa que no hay suficientes entradas y terminamos if(r==rini) { break; } } }
cat = entry.category[0].term;
postimg = relimagenpodefecto; // siempre definimos una por las dudas if(cat=="MIETIQUETA"){postimg = "URL_etiqueta1"} if(cat=="OTRAETIQUETA"){postimg = "URL_etiqueta2"} // agregamos todas las que se nos ocurra
Blogger | JavaScript | json
Plantillas de Blogger para móviles |


<b:includable id='mobile-nextprev'> ....... </b:includable> <b:includable id='mobile-index-post' var='post'> ....... </b:includable>
Keriyo Emoticons |
Buenos Aires
Argentina
Nacido en el tercer mundo. Un santo varón. Buenos Aires. Los elefantes. Las golondrinas de Plaza de Mayo. Me chupo el dedo.
El tiempo es veloz. ¿No ves que ya no somos chiquitos? Despedida de la infancia. Todo es efímero. Juguetes perdidos. Dime quién me lo robó. Aprendizaje.
Soy un hippie. Rutas argentinas. Sobredosis de TV. Raros peinados nuevos. Más de cien mentiras. Delirium tremens.
Ciudad de pobres corazones. El karma de vivir al sur. Mundo de quimeras. Oh Dios, ¿Qué puedo hacer?
Cuando era más joven. Los mayores del mundo. Botas locas. Rejas electrificadas. Cerca de la revolución. Contra todos los males de este mundo. La casa desaparecida. Tumbas de la gloria. Vencedores vencidos. Carguen, apunten, fuego. Estás frito angelito. A lo mejor aún te acuerdas.
Ah, te vi entre las luces. Muchacha. Amor se llama el juego. Juego de seducción. Mi genio amor. Prométeme que nunca me dirás adiós. Pequeñas delicias de la vida conyugal. Toda la vida tiene música hoy. Es hora de levantare, querido (dormiste bien?).
Resumiendo.
Mi sueño de hoy. La sed verdadera. La búsqueda de la estrella. Todos juntos. ¡Ah! Basta de pensar.
Esto es to-to-todo amigos.
| CONTRAER ARCHIVOS |
|
