lunes, 30 de marzo de 2009

Fecha en todos los post

0 comentarios
Como todos sabemos cuando actualizamos varias veces el mismo día ocurre que la fecha sólo aparece en la primera entrada, en el resto no veremos fecha.
J.Miur nos explica con todo detalle como conseguir que nuestras entradas aparezcan todas con fecha.

Las indicaciones son sencillas pero aún así recomiendo leer su entrada porque estoy segura que con ella entenderemos como maneja Blogger las fechas.
Nos situamos en plantilla Edición de HTML y marcamos para expandir la plantilla.
Buscamos:
<b:if cond='data:post.dateHeader'>
<h2 class='date-header'><data:post.dateHeader/></h2>
</b:if>
Y lo sustituimos por:
<b:if cond='data:post.dateHeader'>
<script>var ultimaFecha = '<data:post.dateHeader/>';</script>
<h2 class='date-header'><data:post.dateHeader/></h2>
<b:else/>
<h2 class='date-header'>
<script>document.write(ultimaFecha);</script>
</h2>
</b:if>
A partir de ahí todos nuestros post contendrán la fecha.

Blogger Hack - Entradas Relacionadas

0 comentarios
A veces podría ser una buena práctica agregar una lista de posts relacionados con ese que estamos viendo, es una forma de reavivar artículos "viejos" y promover la lectura de nuestro blog.

En Blogger no hay una herramienta específica para esto pero podemos valernos de las que existen, por ejemplo, las etiquetas o categorías.

Primero que nada, vamos a la plantilla y buscamos la etiqueta </b:skin> y justo debajo de esta, agregamos el script. Esto es así ya que debe estar ANTES que cualquier otro script que hayamos definido:

<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 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++;
}
document.write('</ul>');
}

//]]>
</script>


Donde relatedTitles.length && i < 20 filtra los posts a mostrar según la longitud de su título. En este caso, si contienen más de 20 caracteres, no serán mostrados. El valor 20 puede ser reemplazado por cualquier otro.

Guardamos la plantilla y marcamos Expandir elementos.

Ahora, debemos buscar la siguiente sección de código:

<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>
aquí agregaremos el código del script
</b:loop>
</b:if>


Eso que está entre <b:loop> y </b:loop> es lo que muestra las etiquetas y generalmente aparece en el pie de página de cada post. Lo que debemos hacer es agregar en el lugar indicado, el siguiente código:

<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>


Donde max-results=10 es la cantidad máxima de posts que se mostrarán y puede modificarse por el valor que más nos guste aunque es conveniente poner un valor bajo para evitar que la página tarde mucho en cargarse. Personalmente, no recomendaría que fueran más de cinco.

Hasta aquí lo que estamos haciendo es decirle que, si estamos en una página individual, se ejecute el script. Por el momento, no veremos resultados de ninguna clase así que nuevamente guardamos la plantilla.

Lo más sencillo sería mostrar todo en un elemento HTML que agregaremos a la sidebar. Le ponemos un título, por ejemplo POSTS RELACIONADOS y escribimos el siguiente código:

<script type="text/javascript">
removeRelatedDuplicates();
printRelatedLabels();
</script>


Pero, eso no es todo, volvemos a la plantilla, expandimos elementos y debemos editar el elemento que acabamos de crear. Como no lo hemos movido, será el primero de la sidebar pero, lo más sencillo es buscarlo utilizando el título; en este ejemplo, veremos algo así:

<b:widget id='HTMLXX' locked='false' title='POSTS RELACIONADOS' type='HTML'>
<b:includable id='main'>
<b:if cond='data:blog.pageType == "item"'>
<b:if cond='data:blog.pageType == "item"'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:if>
</b:if>
</b:includable>
</b:widget>


Y allí agregamos las dos líneas resaltadas con color.

Ahora sí, todo está listo para probarlo así que guardamos la plantilla por última vez pero, tengamos en cuenta que este hack sólo será visible cuando estemos en una página individual y siempre y cuando haya etiquetas.

Una alternativa sería colocar este elemento debajo de los posts. Sin duda, esa sería la forma perfecta de mostrarlos.

Una vez creado, podemos ir a Elementos de la página, arrastrarlo y moverlo hasta colocarlo debajo del elemento Blog pero, probablemente deberemos personalizarlo para que se adapte a la estética general.

Añadir un menú en cualquier parte de la cabecera.

0 comentarios
Hay plantillas a las que añadir un menú transforma completamente la estética, les resta protagonismo a la cabecera o simplemente no encontramos un menú discreto y acorde con la plantilla. pero no por ello tenemos que prescindir de un menú.
En estos casos bastaría con añadir un menú tipo texto y ubicarlo en la cabecera de nuestro blog.

Nos situamos en la plantilla sin expandir y buscamos:

<div id='header-wrapper'>
_ _ _ _más código de widget_ _ _ _
</div>

Justo después añadimos un bloque conteniendo un div para albergar el menú.

<div style='position:relative;left:590px;bottom:80px;'>
<a href='url-de-la-página'>Home</a> | <a href='url-de-la-página'> Posts RSS</a> | <a href='url-de-la-página'>Comments RSS |</a>
</div>



A ese bloque le estamos añadiendo la ubicación.
position:relative;left:590px; (podemos aumentar o disminuir para ubicarlo a izquierda o derecha)

bottom:80px; (le otorgamos la altura)

Añadí Home para ir a inicio, Posts RSS para suscribirse a los post y Comments RSS para suscribirse a los comentarios pero podría ser cualquier otro enlace.
Perfil, contacto, una entrada especifica del blog o enlaces externos.

sábado, 21 de marzo de 2009

Sustituir texto de entradas recientes/antiguas por iconos de navegación

2 comentarios

Sustituir el texto por imagen: Nos situamos en Plantilla/Edición HTML/Expandir plantilla de artilugios hasta encontrar esta parte de código:
<b:includable id='nextprev'>
<div class='blog-pager' id='blog-pager'>
<b:if cond='data:newerPageUrl'>
<span id='blog-pager-newer-link'>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + "_blog-pager-newer-link"' expr:title='data:newerPageTitle'><data:newerPageTitle/></a>
</span>
</b:if>
<b:if cond='data:olderPageUrl'>
<span id='blog-pager-older-link'>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + "_blog-pager-older-link"' expr:title='data:olderPageTitle'><data:olderPageTitle/></a>
</span>
</b:if>
<b:if cond='data:blog.homepageUrl != data:blog.url'>
<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
<b:else/>
<b:if cond='data:newerPageUrl'>
<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
</b:if>
</b:if>
</div>
<div class='clear'/>
</b:includable>

Y lo sustituimos por este otro:
<b:includable id='nextprev'>
<div id='blog-pager'>
<b:if cond='data:newerPageUrl'>
<a expr:href='data:newerPageUrl' expr:title='data:newerPageTitle' id='blog-pager-newer-link'>
<img src='http://img58.imageshack.us/img58/8076/leftxv5.png'/>
</a>
</b:if>
<b:if cond='data:olderPageUrl'>
<a expr:href='data:olderPageUrl' expr:title='data:olderPageTitle' id='blog-pager-older-link'>
<img src='http://img260.imageshack.us/img260/9691/rightli5.png'/>
</a>
</b:if>
<a class='home-link' expr:href='data:blog.homepageUrl'>
<img src='http://img260.imageshack.us/img260/6710/homepngrg7.jpg'/>
</a>
</div>
<div class='clear'/>
</b:includable>
Las imágenes que van en el código son las siguientes:

<img src='http://img58.imageshack.us/img58/8076/leftxv5.png'/>
<img src='http://img260.imageshack.us/img260/9691/rightli5.png'/>
<img src='http://img260.imageshack.us/img260/9691/rightli5.png'/>

Podemos cambiar las imágenes de los iconos pero hay que prestar atención en el orden que deben ir :

1º Izquierda 2º Derecha 3º Inicio (Centro)

Sustituir el texto por otro

Lo que hicimos anteriormente fue sustituir las etiquetas por una imagen tipo icono, esas etiquetas son:

<data:newerPageTitle/> Sustituyendo esta etiqueta estamos modificando Entradas más recientes.

<data:olderPageTitle/> Sustituyendo esta etiqueta estamos modificando Entradas antiguas.

<data:homeMsg/> Sustituyendo esta etiqueta estamos modificando Página principal.

Quiere eso decir que si nuestra idea no es añadir una imagen pero nos gustaría cambiar el texto podemos hacerlo sustituyendo las etiqueas por el texto deseado.

Caja contenedora de código personalizada

1 comentarios

Me preguntan la forma de crear la caja donde suelo mostrar los códigos y ahí va la respuesta. Para hacerlo agregaremos estilos CSS donde personalizaremos la caja, es decir background, color, margin, padding etc. Lo podemos hacer agregando las propiedades en la plantilla, antes de ]]></b:skin> y el código a añadir es el siguiente:

aqui el codigo
/* Caja de código */
pre {
background:transparent url(aquí la url de una imagen) no-repeat 0 0; /* Imagen Superior, si deseas cambiarla modifica lo que se encuentra dentro de url(AQUI) */
padding-top:22px; /* Relleno - para ajustar Fondo */
}
pre code {
overflow:auto; /* Determina si es necesario agregar barras de Scroll */
background-color:#E9E9E9; /* Color de Fondo en Hex */
border:1px solid #999999; /* Color de Borde en Hex */
color:#990000; /* Color de letra en Hex */
display:block; /* No tocar */
padding:8px; /* Relleno del cuadro */
white-space:pre; /* No tocar */
text-align:left; /* Alineacion del Texto , left=izquierda, center= centrado, right=derecha */su
min-height:63px; /* Altura minima del Cuadro */
}
/* Cuando pase el Mouse sobre la caja ocurrirá lo siguiente: */
code:hover {
background-color:#ffffff; /* Color de Fondo en Hex */
border:1px solid #666666;/* Color de Borde en Hex */le
}
/* FIN Caja de código */

Mostrar los últimos comentarios y los últimos artículos en la sidebar

0 comentarios
Este “truco” se basa en usar la dirección sindicación de comentarios y los artículos que todos los blogs de Blogger tienen. Estas direcciones son:

Para comentarios: http://tublog.blogspot.com/feeds/comments/default
Para artículos: http://tublog.blogspot.com/posts/comments/default

Donde tublog.blogspot.com es la dirección de tu blog.



Ahora solo hay que ir a Diseño/Elementos de página y dar clic en Añadir un gadget, en la ventana que se abre se selecciona un gadget de Feed y se escribe la dirección de comentarios para mostrar los últimos comentarios, se repite el proceso para crear un nuevo gadget de feed pero esta vez usando la dirección de los artículos.

Eliminar la navbar o barra Blogger

0 comentarios


Aunque esta barra puede tener algunos atajos para manejar nuestro blog, su valor es poco o nulo para el lector, ocupa espacio extra y es poco estética. Eliminarla es sumamente sencillo, solo hay dirigirse a Diseño/Edición HTML y buscar el siguiente código:
 ]]></b:skin> 
Y justo antes pegar lo siguiente:
#navbar-iframe { height:0px; display:none; visibility:hidden; }
 

Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com