lunes, 10 de agosto de 2009

Post relacionados

Viendo algunos borradores, me encontré con este, una entrada que comencé hace tiempo, pero que se quedó en borrador y hoy es publicada.
Me preguntaban como colocar el widget para mostrar las entradas (post) relacionadas. Vamos a ver cómo hacerlo:

♠ Entramos a Diseño/Edición de HTML y Expandir plantillas de artilugios.
♠ En la plantilla, con la ayuda de Ctrl+F, buscamos : ]]></b:skin> y debajo de éste colocamos el siguiente script:

Ver script completo [+/-]...
    <script type='text/javascript'>
    //<![CDATA[

    var relatedTitles = new Array();
    var relatedTitlesNum = 0;
    var relatedUrls = new Array();

    function related_results_labels(json) {
    for (var i = 0; i < json.feed.entry.length; i++) {
    var entry = json.feed.entry[i];
    relatedTitles[relatedTitlesNum] = entry.title.$t;
    for (var k = 0; k < entry.link.length; k++) {
    if (entry.link[k].rel == 'alternate') {
    relatedUrls[relatedTitlesNum] = entry.link[k].href;
    relatedTitlesNum++;
    break;
    }
    }
    }
    }

    function removeRelatedDuplicates() {
    var tmp = new Array(0);
    var tmp2 = new Array(0);
    for(var i = 0; i < relatedUrls.length; i++) {
    if(!contains(tmp, relatedUrls[i])) {
    tmp.length += 1;
    tmp[tmp.length - 1] = relatedUrls[i];
    tmp2.length += 1;
    tmp2[tmp2.length - 1] = relatedTitles[i];
    }
    }
    relatedTitles = tmp2;
    relatedUrls = tmp;
    }

    function contains(a, e) {
    for(var j = 0; j < a.length; j++) if (a[j]==e) return true;
    return false;
    }

    function printRelatedLabels() {
    var cuantosPosts = 0;
    var r = Math.floor((relatedTitles.length - 1) * Math.random());
    var i = 0;
    var dirURL = document.URL;
    document.write('<ul>');
    while (i < relatedTitles.length && i < 20) {
    if (relatedUrls[r] != dirURL) {
    document.write('<li><a href="' + relatedUrls[r] + '" title="Post relacionado: '
    + relatedTitles[r] + '">' + relatedTitles[r] + '</a></li>');
    }
    if (r < relatedTitles.length - 1) {
    r++;
    } else {
    r = 0;
    }
    i++;
    cuantosPosts++;
    if (cuantosPosts == 3) {
    break;
    }
    }
    document.write('</ul>');
    }

    //]]>
    </script>


Donde dice relatedTitles.length && i < 20) nos indica las entradas que se mostrarán según los caracteres que formen el título de las mismas.En este caso podemos cambiar el valor 20 por el que deseemos.
Para cambiar l número de post a mostrar, cambiamos el valor de :if (cuantosPosts == 3) {

♠ Ahora, buscamos en la plantilla, siempre con ayuda de Ctrl+F, el siguiente código y agregamos lo que está en color naranja:

<b:if cond='data:post.labels'>
<data:postLabelsLabel/>
<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&amp;callback=related_results_labels&amp;max-results=10"'
type='text/javascript'/>
</b:if>

</b:loop>
</b:if>


Podemos cambiar el número de entradas que se mostrarán cambiando el valor de max-results=10 , pero les recomiendo que sea un número bajo para que la página no demore al momento de cargar.

♠ Ahora (paciencia,ya vamos a terminar!),buscamos <p class='post-footer-line post-footer-line-3'/> y debajo de éste colocamos el siguiente código:

<div class='post-footer-line post-footer-line-4'>
<b:if cond='data:blog.pageType == "item"'>
<script type="text/javascript">
removeRelatedDuplicates();
printRelatedLabels();
</script>
</b:if>
</div>


♠ Como no podemos ver si funciona adecuadamente el script en vista previa, debemos de tener una copia de la plantilla. Finalmente damos click en Guardar Plantilla.

Dudas, son bienvenidas.

► Referencia: Vagabundia.

sábado, 8 de agosto de 2009

Expandir títulos de los post en las etiquetas

Son varios los que me preguntan cómo hacer para que se muestren sólo los títulos de los post cuando hacemos click en una etiqueta, como pueden ver si hacen click en cualquier etiqueta de mi blog.


Hoy vamos a ver cómo hacerlo.

♠ Vamos a Diseño- Edición de HTML y marcamos Expandir plantillas de artilugios.
♠ Ahora pegaremos el siguiente código antes de </head> con lo que estaríamos alojando directamente el script en nuestra plantilla:

<script type='text/javascript'>
//<![CDATA[
function toggleIt(id) {
post = document.getElementById(id);
if (post.style.display != 'none') {
post.style.display = 'none';
} else {
post.style.display = '';
}
}
function showFullPost(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
for (var i = 0; i < spans.length; i++) {
if (spans[i].id == "fullpost")
spans[i].style.display = 'inline';
if (spans[i].id == "readmore")
spans[i].style.display = 'none';
}
}
function showFull(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
for (var i = 0; i < spans.length; i++) {
if (spans[i].id == "fullpost")
spans[i].style.display = 'inline';
if (spans[i].id == "showlink")
spans[i].style.display = 'none';
if (spans[i].id == "hidelink")
spans[i].style.display = 'inline';
}
}
function hideFull(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
for (var i = 0; i < spans.length; i++) {
if (spans[i].id == "fullpost")
spans[i].style.display = 'none';
if (spans[i].id == "showlink")
spans[i].style.display = 'inline';
if (spans[i].id == "hidelink")
spans[i].style.display = 'none';
}
post.scrollIntoView(true);
}
function checkFull(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
var found = 0;
for (var i = 0; i < spans.length; i++) {
if (spans[i].id == "fullpost")
found = 1;
if ((spans[i].id == "showlink") && (found == 0))
spans[i].style.display = 'none';
}
}
function commentDisplay(json) {
for (var i = 0; i < numcomments; i++) {
var entry = json.feed.entry[i];
var alturl;
if (i == json.feed.entry.length) break;
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
alturl = entry.link[k].href;
break;
}
}
alturl = alturl.replace("#", "#comment-");
if (entry.content) {
comment = entry.content.$t;}
else if (entry.summary) {
comment = entry.summary.$t;}
var re = /<\S[^>]*>/g;
comment = comment.replace(re, "");
document.write('<a href="' + alturl + '">' + entry.author[0].name.$t + '</a> commented:<br/>');
if (comment.length < numchars)
document.write(comment + '<br/><br/>');
else
document.write(comment.substring(0, numchars) + '...<br/><br/>');
}}
//]]>
</script>

♠ Seguidamente, buscaremos en la plantilla lo que está en color negro y pegaremos lo que está en color naranja, tal como se muestra:

<b:includable id='PeekABooPost' var='post'>
<div class='post uncustomized-post-template'>
<table><tr><td width='40px'>
<a expr:onclick='&quot;javascript:toggleIt(\&quot;&quot; + data:post.id + &quot;\&quot;);&quot;' href='javascript:void(0)' style='text-decoration:none' title='Expandir/contraer la entrada'>[+/-]</a></td>
<td><h3 class='post-title'><a expr:href='data:post.url'><data:post.title/></a></h3></td></tr></table>
<div class='post-body' expr:id='data:post.id' style='display:none'>
<p><data:post.body/></p>
<div style='clear: both;'/> <!-- clear for photos floats -->
</div>
</div>
</b:includable>


<b:includable id='main' var='top'>

<!-- posts -->

<div id='blog-posts'>

<b:loop values='data:posts' var='post'>

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

<h2 class='date-header'><data:post.dateHeader/></h2>

</b:if>


<b:if cond='data:blog.homepageUrl != data:blog.url'>
<b:if cond='data:blog.pageType != &quot;item&quot;'>
<b:include data='post' name='PeekABooPost'/>
<b:else/>
<b:include data='post' name='post'/>
</b:if>
<b:else/>


<b:include data='post' name='post'/>


</b:if>

♠ Recuerden, hay que buscar los códigos y pegar lo que está en anaranjado tal como se muestra. Luego, damos click a guardar.

Como vieron, es sencillo, pero un poquito demoroso.

viernes, 7 de agosto de 2009

Cómo descargar una copia de tu plantilla

Como siempre digo, antes de hacer cualquier cosa en nuestro blog es recomendable guardar una copia de nuestra plantilla, para que, si algo sale mal, podemos volver a subirla y no tendremos problemas.

Otro uso de descargar la plantilla es para cualquier consulta, hay ocasiones en que , para poder ayudarlos, necesito una copia de la plantilla (claro, sólo me la envían cuando yo se los pida)...Pero he visto que son varios que no saben cómo descargar la plantilla y lo que hacen es copiar la plantilla y pegarlo en un archivo .doc Si me lo envían , no podré ayudarlos porque Blogger no acepta plantillas con terminación .doc

Hoy vamos a ver cómo descargar la plantilla que es muy sencillo.

♠ Vamos a Diseño - Edición de HTML y damos click a Descargar plantilla completa.


♠ Aparecerá un cuadro de diálogo donde escogeremos la opción Guardar. Y éso es todo, bastante sencillo. Ese archivo que han descargado, con terminación .xml es el archivo que me tienen que enviar cuando les pida copia de su plantilla para ayudarlos.

miércoles, 5 de agosto de 2009

Muchos widgets con Widgetbox

Widgetbox es una web que nos ofrece una cantidad inimsginable de widgets para nuestro blog; cuneta con un buscador que nos permite localizar fácilmente el gadget que querramos agregar.

Podemos encontrar todo tipo de widgets, desde calendarios o relojes hasta juegos. Aquí una pequeña muestra de un reloj que me gustó mucho.

viernes, 31 de julio de 2009

Íconos de redes sociales en forma de estampas

En Marco Folio encontré una colección muy buena de 13 íconos de redes sociales en forma de estampillas, en diferentes tamaños ( 32x32, 64x64, 128x128).


► Descargar: Marco Folio

miércoles, 29 de julio de 2009

Navbar transparente

Hace tiempo vimos algunas opciones de lo que podíamos hacer con la navbar (como ocultarla, personalizarla o aplicar un botón para ocultarla y mostrarla). Hoy haremos algo diferente, haremos que la navbar quede como oculta por un velo gracias a la aplicación de transparencia.

♠ Con ayuda de CTRL+F buscamos ]]></b:skin> y encima de este pegaremos el siguiente código:
#navbar-iframe {
filter:alpha(opacity=20);
opacity:.20;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; /*--IE 8 Transparency--*/
}
Aquí les dejo una imagen de muestra con el antes y el después.