Skip to content

Instantly share code, notes, and snippets.

@fredbradley
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fredbradley/8823178 to your computer and use it in GitHub Desktop.
Save fredbradley/8823178 to your computer and use it in GitHub Desktop.
Copy this script and put it right at the bottom of your index.html file. Ensure that somewhere in your template there is a div that looks like this: <div id="emapTweet"></div>
p.interact a {
background:url("twitter-sprite.png"); /* Obviously make sure that twitter-sprite.png is included in your template! */
display: inline-block;
height: 20px;
width: 20px;
text-indent: -9999px;
}
p.interact a.twitter_reply_icon,
p.interact a.twitter_retweet_icon,
p.interact a.twitter_fav_icon {
margin: 0 5px 0 0;
}
p.interact a.twitter_fav_icon {
background-position: 75px 70px;
}
p.interact a.twitter_retweet_icon {
background-position: 67px 90px;
}
p.interact a.twitter_reply_icon {
background-position: 74px 108px;
}
<!--
IMPORTANT: Make sure there is a <div> somewhere on your page with the ID: "emapTweet"
Example: <div id="emapTweet"></div>
This script will replace anything you put inside that div
(so don't bother putting anything inside it) with your latest tweet.
-->
<script type="text/javascript">
/* DISPLAY LATEST TWEET */
/*
1. Go to twitter.com and create a widget.
2. Find the widget ID from the code it gives you.
3. Put the widget ID inside the single quotation marks below. */
var twitter_timeline_id = '425676480731836416';
/********************************************************************
******* YOU SHOULD NOT NEED TO EDIT BEYOND THIS LINE ****************
* FRED HAS MADE IS EXTRA SIMPLE FOR SOMEONE TO EDIT THIS! *
*********************************************************************/
/*********************************************************************
* #### Twitter Post Fetcher v10.0 ####
* Coded by Jason Mayes 2013. A present to all the developers out there.
* www.jasonmayes.com
* Please keep this disclaimer with my code if you use it. Thanks. :-)
* Got feedback or questions, ask here:
* http://www.jasonmayes.com/projects/twitterApi/
* Updates will be posted to this site.
*********************************************************************/
var twitterFetcher=function(){function x(e){return e.replace(/<b[^>]*>(.*?)<\/b>/gi,function(c,e){return e}).replace(/class=".*?"|data-query-source=".*?"|dir=".*?"|rel=".*?"/gi,"")}function p(e,c){for(var g=[],f=RegExp("(^| )"+c+"( |$)"),a=e.getElementsByTagName("*"),h=0,d=a.length;h<d;h++)f.test(a[h].className)&&g.push(a[h]);return g}var y="",l=20,s=!0,k=[],t=!1,q=!0,r=!0,u=null,v=!0,z=!0,w=null,A=!0;return{fetch:function(e,c,g,f,a,h,d,b,m,n){void 0===g&&(g=20);void 0===f&&(s=!0);void 0===a&&(a=
!0);void 0===h&&(h=!0);void 0===d&&(d="default");void 0===b&&(b=!0);void 0===m&&(m=null);void 0===n&&(n=!0);t?k.push({id:e,domId:c,maxTweets:g,enableLinks:f,showUser:a,showTime:h,dateFunction:d,showRt:b,customCallback:m,showInteraction:n}):(t=!0,y=c,l=g,s=f,r=a,q=h,z=b,u=d,w=m,A=n,c=document.createElement("script"),c.type="text/javascript",c.src="//cdn.syndication.twimg.com/widgets/timelines/"+e+"?&lang=en&callback=twitterFetcher.callback&suppress_response_codes=true&rnd="+Math.random(),document.getElementsByTagName("head")[0].appendChild(c))},
callback:function(e){var c=document.createElement("div");c.innerHTML=e.body;"undefined"===typeof c.getElementsByClassName&&(v=!1);e=[];var g=[],f=[],a=[],h=[],d=0;if(v)for(c=c.getElementsByClassName("tweet");d<c.length;){0<c[d].getElementsByClassName("retweet-credit").length?a.push(!0):a.push(!1);if(!a[d]||a[d]&&z)e.push(c[d].getElementsByClassName("e-entry-title")[0]),h.push(c[d].getAttribute("data-tweet-id")),g.push(c[d].getElementsByClassName("p-author")[0]),f.push(c[d].getElementsByClassName("dt-updated")[0]);
d++}else for(c=p(c,"tweet");d<c.length;)e.push(p(c[d],"e-entry-title")[0]),h.push(c[d].getAttribute("data-tweet-id")),g.push(p(c[d],"p-author")[0]),f.push(p(c[d],"dt-updated")[0]),0<p(c[d],"retweet-credit").length?a.push(!0):a.push(!1),d++;e.length>l&&(e.splice(l,e.length-l),g.splice(l,g.length-l),f.splice(l,f.length-l),a.splice(l,a.length-l));c=[];d=e.length;for(a=0;a<d;){if("string"!==typeof u){var b=new Date(f[a].getAttribute("datetime").replace(/-/g,"/").replace("T"," ").split("+")[0]),b=u(b);
f[a].setAttribute("aria-label",b);if(e[a].innerText)if(v)f[a].innerText=b;else{var m=document.createElement("p"),n=document.createTextNode(b);m.appendChild(n);m.setAttribute("aria-label",b);f[a]=m}else f[a].textContent=b}b="";s?(r&&(b+='<div class="user">'+x(g[a].innerHTML)+"</div>"),b+='<p class="tweet">'+x(e[a].innerHTML)+"</p>",q&&(b+='<p class="timePosted">'+f[a].getAttribute("aria-label")+"</p>")):e[a].innerText?(r&&(b+='<p class="user">'+g[a].innerText+"</p>"),b+='<p class="tweet">'+e[a].innerText+
"</p>",q&&(b+='<p class="timePosted">'+f[a].innerText+"</p>")):(r&&(b+='<p class="user">'+g[a].textContent+"</p>"),b+='<p class="tweet">'+e[a].textContent+"</p>",q&&(b+='<p class="timePosted">'+f[a].textContent+"</p>"));A&&(b+='<p class="interact"><a href="https://twitter.com/intent/tweet?in_reply_to='+h[a]+'" class="twitter_reply_icon">Reply</a><a href="https://twitter.com/intent/retweet?tweet_id='+h[a]+'" class="twitter_retweet_icon">Retweet</a><a href="https://twitter.com/intent/favorite?tweet_id='+
h[a]+'" class="twitter_fav_icon">Favorite</a></p>');c.push(b);a++}if(null==w){e=c.length;g=0;f=document.getElementById(y);for(h="<ul>";g<e;)h+="<li>"+c[g]+"</li>",g++;f.innerHTML=h+"</ul>"}else w(c);t=!1;0<k.length&&(twitterFetcher.fetch(k[0].id,k[0].domId,k[0].maxTweets,k[0].enableLinks,k[0].showUser,k[0].showTime,k[0].dateFunction,k[0].showRt,k[0].customCallback,k[0].showInteraction),k.splice(0,1))}}}();
/**
* How to use fetch function:
* @param {string} Your Twitter widget ID.
* @param {string} The ID of the DOM element you want to write results to.
* @param {int} Optional - the maximum number of tweets you want returned. Must
* be a number between 1 and 20.
* @param {boolean} Optional - set true if you want urls and hash
tags to be hyperlinked!
* @param {boolean} Optional - Set false if you dont want user photo /
* name for tweet to show.
* @param {boolean} Optional - Set false if you dont want time of tweet
* to show.
* @param {function/string} Optional - A function you can specify to format
* tweet date/time however you like. This function takes a JavaScript date
* as a parameter and returns a String representation of that date.
* Alternatively you may specify the string 'default' to leave it with
* Twitter's default renderings.
* @param {boolean} Optional - Show retweets or not. Set false to not show.
* @param {function/string} Optional - A function to call when data is ready. It
* also passes the data to this function should you wish to manipulate it
* yourself before outputting. If you specify this parameter you must
* output data yourself!
* @param {boolean} Optional - Show links for reply, retweet, favourite. Set false to not show.
*/
twitterFetcher.fetch(twitter_timeline_id, 'emapTweet', 1, true, false, false, '', true, showTweet);
function showTweet(tweets){
var x = tweets.length;
var n = 0;
var element = document.getElementById('emapTweet');
var html = '<p>';
while(n < x) {
html += '' + tweets[n] + '';
n++;
}
html += '</p>';
element.innerHTML = html;
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment