2010-07-11 4 views
0

J'ai ce widget Twitter qui fonctionne très bien (et est facilement personnalisable), mais j'ai un problème avec elle. Je veux seulement poster des tweets de moins de deux jours, mais je ne sais pas comment faire. Ainsi, dans le code HTML, je donne les résultats suivants:Twitter Widget - Post seulement tweets moins de deux jours

<ul id="twitter_update_list"></ul> 

<script src="/assets/script_twitterwidget.js" type="text/javascript"></script> 
<script src="http://twitter.com/statuses/user_timeline/YourTwitterProfile.json?callback=twitterCallback2&amp;count=1" type="text/javascript"></script> 

Puis les js a:

function relative_time(time_value) { 
var values = time_value.split(" "); 
time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3]; 
var parsed_date = Date.parse(time_value); 
var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); 
var delta = parseInt((relative_to.getTime() - parsed_date)/1000); 
delta = delta + (relative_to.getTimezoneOffset() * 60); 
return delta; 
} 

function absolute_time(created_at) { 
var date = (created_at).substring(0,11); 
var year = (created_at).substring(26); 
var time = (created_at).substring(10,26); 
var full = date + year + time; 
var full = new Date(Date.parse(full)).toLocaleDateString(); 
return full; 
} 

if (delta < (48*60*60)) { 

function twitterCallback2(twitters) { 
    var statusHTML = []; 
    for (var i=0; i<twitters.length; i++){ 
    var username = twitters[i].user.screen_name; 
    var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) { 
     return '<a href="'+url+'">'+url+'</a>'; 
    }).replace(/\[email protected]([_a-z0-9]+)/ig, function(reply) { 
     return reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>'; 
    }); 
    statusHTML.push('<li><a target="_blank" style="font-size:100%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+absolute_time(twitters[i].created_at)+':'+'</a>'+' '+'<span>'+status+'</span></li>'); 
    } 
    document.getElementById('twitter_update_list').innerHTML = statusHTML.join(''); 
    } 

} 

J'ai ajouté la fonction temporelle relative et l'instruction if pour essayer d'afficher uniquement les derniers tweets (il fonctionne très bien sans ce code mais montre quel que soit le dernier tweet, quel que soit son âge). Cependant, cela ne fait pas l'affaire. Merci pour l'aide.

Répondre

0

Ce qui précède était en fait assez proche, même s'il m'a fallu toute la journée pour le comprendre. Je devais juste reformuler la déclaration if et la déplacer au bon endroit. Ainsi, les deux premières fonctions sont très bien, mais la dernière devrait être:

function twitterCallback2(twitters) { 
    var statusHTML = []; 
    for (var i=0; i<twitters.length; i++) { 
     if ((relative_time(twitters[i].created_at)) < (3*24*60*60)) { 
      var username = twitters[i].user.screen_name; 
      var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) { 
       return '<a href="'+url+'">'+url+'</a>'; 
       }).replace(/\[email protected]([_a-z0-9]+)/ig, function(reply) { 
       return reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>'; 
       }); 
       statusHTML.push('<li><a target="_blank" style="font-size:100%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+absolute_time(twitters[i].created_at)+':'+'</a>'+' '+'<span>'+status+'</span></li>'); 
     } 
    } 
    document.getElementById('twitter_update_list').innerHTML = statusHTML.join(''); 
} 

Comme vous pouvez le voir, si le temps de tweet est il y a moins de trois jours, il affichera le widget sur votre site.

Questions connexes