Aktuellen Tweet per jQuery ausgeben
24 Jan 2010 — 0 Comments — — Estimated reading time: 4 minutes read
Caching ist eine schöne Sache. Die Seiten werden schneller ausgegeben und man muss kürzer warten. Marian hat auf uxzentrisch beschrieben, warum schnelle Websites wichtig sind.
Nur wie soll man dann aktuelle Daten wie den letzten Tweet anzeigen. Die Lösung ist Javascript und insbesondere mal wieder jQuery.
Auf onygo benutze ich das WordPress Plug-In WP Super Cache um die WordPress Seiten zu cachen. Die gecachten Seiten werden nach 86400 Sekunden — also einem Tag — gelöscht.
Um die Tweets via jQuery abzurufen und auszugeben verwende ich die Plug-Ins jTwitter und Timeago sowie die Date Erweiterung Date.format. Zudem benutze ich das WordPress Plug-In Twitter Tools von Alex King, um Tweets auch ohne Javascript — dann aber nicht den neuesten — anzuzeigen.
Zudem benutze ich eine AJAX-Loader-Grafik von Ajaxload.
Mein HTML besteht aus je einem span für den Tweet und einem für seinen Zeitstempel. Zudem wird ein Preloader für die Ladezeit eingeblendet.
1 2 3 4 5 6 7 | <div id="twitter"> <span class="status jshide"> <span id="tweet">Tweettext</span> <span id="tweettime">Tweettime</span> </span> <span class="preloader nojshide"><img src="ajax-loader-white.gif" /></span> </div> |
Die beiden Elemente werden wie hier beschrieben abhängig vom Vorhandensein von Javascript angezeigt. Dafür wird folgendes CSS benutzt:
1 2 3 | .hide, .hasjavascript .jshide, .hasnojavascript .nojshide { display:none; } |
Und natürlich muss auch noch etwas in die $(document).ready Funktion eingefügt werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | $(document).ready(function(){ $.jTwitter('TWITTERID', 1, function(posts){ var text = posts[0].text ; text = text.replace(/http:\/\/(\S*)/gi,"<a href=\"http://$1\" class=\"external\">http://$1</a>"); text = text.replace(/https:\/\/(\S*)/gi,"<a href=\"https://$1\" class=\"external\">https://$1</a>"); text = text.replace(/@(\w*)/gi, "@<a href=\"http://twitter.com/$1\" class=\"external\">$1</a>"); text = text.replace(/#(\w*)/gi, "#<a href=\"http://search.twitter.com/search?q=%23$1\" class=\"external\">$1</a>"); if (posts[0].in_reply_to_screen_name) { text += ' <a href="http://twitter.com/'+posts[0].in_reply_to_screen_name+'/statuses/'+posts[0].in_reply_to_status_id+'" class="aktt_tweet_reply external">'; text += 'als Antwort auf '+posts[0].in_reply_to_screen_name+'</a> '; } $('#tweet').html(text); var thedate = new Date(posts[0].created_at); var thetime; var isodate = thedate.format("c"); thetime = '[<a href="http://twitter.com/'+ posts[0].user.screen_name +'/statuses/'+ posts[0].id +'" class="aktt_tweet_time external timestamp" timestamp="' + isodate + '" title="' + isodate + '">'; thetime += 'am '+ thedate.format("j. M Y") + ' um ' + thedate.format("H:i"); thetime += '</a> via ' + '<a href="http://twitter.com/'+ posts[0].user.screen_name +'/" class="external">Twitter</a>]'; $('#tweettime').html(thetime); $(".timestamp").timeago(); $("#twitter .preloader").addClass('hide'); $("#twitter .status").removeClass('jshide'); }); }); |
Mein HTML ist im Javascript fest eincodiert und muss entsprechend angepasst werden. Und natürlich muss die richtige TwitterID angegeben werden.
1 Trackback
No comments yet
Post a comment
Your comment