Sunday, 15 November 2009

Twitter Feeds in Umbraco using XSLT

There are currently two packages tagged on the Umbraco forum that can be used to add a twitter feed to your website. I was playing around with "Twitter for Umbraco" by Warren Buckley and noticed a bug in the way it converted twitter @names to links, so I thought I would try and solve this using XSLT.

It may also be useful for those of you using Darren Ferguson's "Feed Cache" package as the demo on Darren's site does not add links to the tweets.

To use this XSLT you simple call the XSLT Template passing in your Twitter message:

<xsl:call-template name="formaturl">
<xsl:with-param name="url" select="text"/>
</xsl:call-template>

Then add the XSLT template to your XSLT macro (outside of the main template)

<xsl:template name="formaturl">
<xsl:param name="twitterfeed"/>
<xsl:variable name="transform-http" select="Exslt.ExsltRegularExpressions:replace($twitterfeed, '(http\:\/\/\S+)',ig,'<a href="$1">$1</a>')"/>
<xsl:variable name="transform-https" select="Exslt.ExsltRegularExpressions:replace($transform-http, '(HTTps\:\/\/\S+)',ig,'<a href="$1">$1</a>')"/>
<xsl:variable name="transform-AT" select="Exslt.ExsltRegularExpressions:replace($transform-https, '(^|\s)@(\w+)',ig,' <a href="http://www.twitter.com/$2">@$2</a>')"/>
<xsl:variable name="transform-HASH" select="Exslt.ExsltRegularExpressions:replace($transform-AT, '(^|\s)#(\w+)',ig,' <a href="http://www.twitter.com/search?q=$2">#$2</a>')"/>
<xsl:value-of select="$transform-HASH" disable-output-escaping="yes"/>
</xsl:template>

You should find that this now replaces all the @names, #names and URL's with links!

Top 5 most popular posts