16 julio 2009

Boton de ReTweet en tus entradas

John Resig ha creado un script que nos permite incorporar a nuestras entradas un botón para que puedan hacer un RT de las mismas en Twitter, al estilo Tweetmeme.

Para implementarlo debemos pegar antes de </body>

<script type='text/javascript'>
//<![CDATA[
/*
* Easy Retweet Button
* http://ejohn.org/blog/retweet/
* by John Resig (ejohn.org)
*
* Licensed under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*/

(function(){

window.RetweetJS = {
// Your Bit.ly Username
bitly_user: "retweetjs",

// Your Bit.ly API Key
// Found here: http://bit.ly/account
bitly_key: "R_6287c92ecaf9efc6f39e4f33bdbf80b1",

// The text to replace the links with
link_text: (/windows/i.test( navigator.userAgent) ? "&#9658;" : "&#9851;") +
"&nbsp;Retweet",

// What # to show (Use "clicks" for # of clicks or "none" for nothing)
count_type: "clicks",

// Tweet Prefix text
// "RT @jeresig " would result in: "RT @jeresig Link Title http://bit.ly/asdf"
prefix: "",

// Style information
styling: "a.retweet { font: 12px Helvetica,Arial; color: #000; text-decoration: none; border: 0px; }" +
"a.retweet span { color: #FFF; background: #94CC3D; margin-left: 2px; border: 1px solid #43A52A; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; }" +
"a.vert { display: block; text-align: center; font-size: 16px; float: left; margin: 4px; }" +
"a.retweet strong.vert { display: block; margin-bottom: 4px; background: #F5F5F5; border: 1px solid #EEE; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; }" +
"a.retweet span.vert { display: block; font-size: 12px; margin-left: 0px; }"
};

//////////////// No Need to Configure Below Here ////////////////

var loadCount = 1;

// Asynchronously load the Bit.ly JavaScript API
// If it hasn't been loaded already
if ( typeof BitlyClient === "undefined" ) {
var head = document.getElementsByTagName("head")[0] ||
document.documentElement;
var script = document.createElement("script");
script.src = "http://bit.ly/javascript-api.js?version=latest&login=" +
RetweetJS.bitly_user + "&apiKey=" + RetweetJS.bitly_key;
script.charSet = "utf-8";
head.appendChild( script );

var check = setInterval(function(){
if ( typeof BitlyCB !== "undefined" ) {
clearInterval( check );
head.removeChild( script );
loaded();
}
}, 10);

loadCount = 0;
}

if ( document.addEventListener ) {
document.addEventListener("DOMContentLoaded", loaded, false);

} else if ( window.attachEvent ) {
window.attachEvent("onload", loaded);
}

function loaded(){
// Need to wait for doc ready and js ready
if ( ++loadCount < 2 ) {
return;
}

var elems = [], urlElem = {}, hashURL = {};

BitlyCB.shortenResponse = function(data) {
for ( var url in data.results ) {
var hash = data.results[url].userHash;
hashURL[hash] = url;

var elems = urlElem[ url ];

for ( var i = 0; i < elems.length; i++ ) {
elems[i].href += hash;
}

if ( RetweetJS.count_type === "clicks" ) {
BitlyClient.stats(hash, 'BitlyCB.statsResponse');
}
}
};

BitlyCB.statsResponse = function(data) {
var clicks = data.results.clicks, hash = data.results.userHash;
var url = hashURL[ hash ], elems = urlElem[ url ];

if ( clicks > 0 ) {
for ( var i = 0; i < elems.length; i++ ) {
var strong = document.createElement("strong");
strong.appendChild( document.createTextNode( clicks + " " ) );
elems[i].insertBefore(strong, elems[i].firstChild);

if ( /(^|s)vert(s|$)/.test( elems[i].className ) ) {
elems[i].firstChild.className = elems[i].lastChild.className = "vert";
}
}
}

hashURL[ hash ] = urlElem[ url ] = null;
};

if ( document.getElementsByClassName ) {
elems = document.getElementsByClassName("retweet");
} else {
var tmp = document.getElementsByTagName("a");
for ( var i = 0; i < tmp.length; i++ ) {
if ( /(^|s)retweet(s|$)/.test( tmp[i].className ) ) {
elems.push( tmp[i] );
}
}
}

if ( elems.length && RetweetJS.styling ) {
var style = document.createElement("style");
style.type = "text/css";

try {
style.appendChild( document.createTextNode( RetweetJS.styling ) );
} catch (e) {
if ( style.styleSheet ) {
style.styleSheet.cssText = RetweetJS.styling;
}
}

document.body.appendChild( style );
}

for ( var i = 0; i < elems.length; i++ ) {
var elem = elems[i];

if ( /(^|s)self(s|$)/.test( elem.className ) ) {
elem.href = window.location;
elem.title = document.title;
}

var origText = elem.title || elem.textContent || elem.innerText,
href = elem.href;

elem.innerHTML = "<span>" + RetweetJS.link_text + "</span>";
elem.title = "";
elem.href = "http://twitter.com/home?status=" +
encodeURIComponent(RetweetJS.prefix + origText + " http://bit.ly/");

if ( urlElem[ href ] ) {
urlElem[ href ].push( elem );
} else {
urlElem[ href ] = [ elem ];
BitlyClient.shorten(href, 'BitlyCB.shortenResponse');
}
}

}

})();
//]]>
</script>


Podemos insertarlo horizontalmente o verticalmente

Para que se vea en el blog, agregaremos donde queramos que aparezca en las entradas.

En formato horizontal

<a class="retweet self"/>

En vertical

<a class="retweet vert self"/>

En el mismo script esta el css por si queremos modificarlo

// Style information
styling: "a.retweet { font: 12px Helvetica,Arial; color: #000; text-decoration: none; border: 0px; }" +
"a.retweet span { color: #FFF; background: #94CC3D; margin-left: 2px; border: 1px solid #43A52A; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; }" +
"a.vert { display: block; text-align: center; font-size: 16px; float: left; margin: 4px; }" +
"a.retweet strong.vert { display: block; margin-bottom: 4px; background: #F5F5F5; border: 1px solid #EEE; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; }" +
"a.retweet span.vert { display: block; font-size: 12px; margin-left: 0px; }"
};

24 comentaron:

Voy a probarlo en vez del twittmeme en mi blog porque a veces siento que me falla :) muchas gracias :)

besos ronroneados ^_^

Σ=o) Pau

Otro hack gracias a Pizcos en mi blog. Un abrazo.

Carlos Soler

Pizcos he probado Retweet en mi blog, pero se abre Twitter y en vez del RETWEET aparece undefined http://bit.ly/ ¿Que he de hacer? Gracias!

Carlos Soler

De momento hasta que me des la solución pongo tweetmeme. Me gusta mucho más tu opción. Un abrazo.

Carlos Soler

Pau ☺☺☺

Pizcos

Carlo Soler busca esto en el script

// Tweet Prefix text
// "RT @jeresig " would result in: "RT @jeresig Link Title http://bit.ly/asdf"
prefix: "",

y en prefix, entre las comillas pon RT @TU NOMBRE DE USUARIO DE TWITTER

☺☺☺

Pizcos

Sigue habiendo algo mal, ahora sale RT @Blogtecniaundefined http://bit.ly/

Carlos Soler

Carlos dame un rato y te digo... tengo que mirar porque no te sale...como veras ando liado con mi plantilla ☺☺☺

Pizcos

mmmmmmmm una cosa, en configuracion de tu blog, esta puesto el nombre de tu blog???

Pizcos

hosti masterrr!!!! te juro que lo iba a mirar con buenos ojos, pero una vez le he dado al leer mas.... ufffffff.....

Un saludo.

Perem

Si en cofiguración tengo el titulo de mi blog.

Carlos Soler

Pizcos, ya lo tengo solucionado debes tener mal el código, pues he copiado el script de origen y ahora funciona, tambien me he dado de alta en bit.ly y tengo mi API, para poder ver estadísticas. Una pregunta, ¿que debo hacer si estoy en la pagina principal y no quiero que salga al clicar la portada de Blogtecnia? Gracias y saludos.

Carlos Soler

Blogger me la habra jugado, voy a ponerlo de nuevo...

Para eso debes usar el condicional

<b:if cond='data:blog.pageType == &quot;item&quot;'>
CODIGO
</b:if>

☺☺☺

Pizcos

PIPI preciosos los cambios, esos pequeños tics de luminosidad (como rayitas blancas) encantadoras!!!
Fecha y título preciosos :)...buen finde!!!

Graciela

Graciela ☺☺☺ aun me queda todo lo tuyo...

Pizcos

Puse todo lo que dijiste, e incluso abri mi cuenta en bit, pero al dirigir el retweet lo hace con el nombre de mi blog y la página principal y no el titulo del post que quiero hacer retweet?
Me gusta como queda es sencillo y simple ^^

besos ronroneados ^^

Σ=o) Pau

Pau lo haces desde ña pagina principal o la individual??? usa el condicional que explico en un comentario ☺☺☺

Pizcos

Corregí el condicional, y ahora me aparece en la página de entradas, pero me sigue sin aparecer el título y el numero de retweet es el del post anterior :( no esta de cero :(

besos ronroneados

Σ=o) Pau

Pau yo he puesto el retweet de Pizcos justo antes de los comentarios si quieres saber como se coloca léelo en la entrada de Rosa y mira como me ha quedado a mi en las entradas individuales ¿donde colocar el código de Pizcos?

Carlos Soler

Espero no te moleste la intromisión Pizcos. Un abrazo.

Carlos Soler

Se corrigió, se corrigió!!!!!!!!!!!!! :D era problema de la key de bit.ly :D
Muchísimas gracias Carlos por el consejo, aunque lo solucioné, siempre es bueno tener una opción y entre Pizcos y Rosa mi blog es lo que es hoy con sus maravillosas enseñanzas y trucos :D

besos ronroneados a los dos ^_^

Σ=o) Pau

¡Me alegro! Si, Pizcos y Rosa son "maestros". S@ludos.

Carlos Soler

Hola Pizcos una preguntita, tu utilizaste tu API o seguiste con la que traía el código? Estoy intentando utilizarlo y al poner mi API de bit.ly no consigo que funcione. Pau, tú cómo arreglaste lo de la key?

Un abrazo!!

TwitterBoy

Ups!! no he dicho nada, era el Username que no lo había cambiado...
uuups!!

TwitterBoy

Publicar un comentario en la entrada

"No dudes en preguntar, intentaré ayudarte. Tus comentarios son importantes y si te gustó esta entrada, no olvides suscribirte a mi feed."

Algunos consejos.

- No escribas en mayúsculas, en un blog significa "gritar".

- Esto es un blog, no un móvil, por lo tanto no escribas tipo sms.

- No hago intercambio de links.

- Evita comentarios tipo "Hola, gran blog mi blog es..."

- Ten habilitado tu perfil y podré visitarte.

- Antes de preguntar asegúrate de que no se haya contestado o explicado antes, usa el buscador.

Siento deciros que si no se siguen, los comentarios serán eliminados.

Google Pagerank

Entradas populares

Ultimos Twitts

Seguidores