Content last modified Monday 6 March 2017
hop to #bottom
Current version:
About It:
Get it:
Rate it:
  • Helpful?
  • 0 Yes
  • 1 No
Flag it:

If you'd like to provide updated information and do not have access to directly edit, please contact the site admin; thanks!



Dynamically present profile hresume data


gs_linkedin is a port of Brad Touesnard’s Wordpress plugin LinkedIn hResume. It grabs the Microformated hResume block from your LinkedIn public profile page allowing you to add it to any page with a simple textpattern tag and apply your own styles.

Thanks to Mariano Absatz for help reporting bugs.


gs_linkedin is released under the GPL. Download it.

Setup / Installation

Your LinkedIn profile must be configured to “Full View”. The default view is “Basic”. Once the Linkedin API is public this could change.

The hResume classes and ids are left in place and can be styled as you wish. Below is the css Brad Touesnard created for his plugin, as well as my modified version.

The plugin does not currently use any cache, fetch images, or require any non-standard php configurations.


gs_linkedin requires two attributes.

  • linkedin_src – the url of your public profile
  • name – your full name



<txp:gs_linkedin linkedin_src="" name="Grant Stavely" />



I prefer a very basic style and hide much of the linkedin-specific content.

#overview, div.profile-header, div.actions, #summary h2, summary h3, #additional-information,  .info, .skills  { 	display: none; } #experience ul.vcalendar li.experience { 	position: relative; } abbr { 	text-decoration: none; 	border: none; 	color: #999; 	font-style: italic; 	font-size: .9em; } .organization-details { 	font-size: .9em; 	color: #999; } .org summary { 	font-size: 1.2em; 	font-style: italic; } 

Brad’s WordPress CSS works with minor modifications in Textpattern designs.

/* Elements */ body { 	font-family: Lucida, Helvetica, Arial, sans-serif; 	color: #333; 	margin: 0px 0px 0px 0px; 	padding: 0px 0px 0px 0px; 	background-color: #fff; 	font-size: 0.9em; } a { 	color: #3333cc; 	text-decoration: none; } a:hover { 	color: #9999ff; 	text-decoration: underline; } form { 	margin: 0px 0px 0px 0px; 	padding: 0px 0px 0px 0px; } hr { 	border: none 0; 	border-top: 1px dashed #C5C5C5; 	height: 1px; 	margin: 0px 0px 0px 0px; 	padding: 0px 0px 0px 0px; 	display: none; } blockquote { 	margin-left: 20px; 	border-left: 20px solid #eee; 	padding-left: 10px; 	font-size: 0.9em; } ul, ul ul { 	margin-left: 0; 	padding-left: 1.1em; } dt { 	font-weight: bold; } dd { 	margin-left: 1.0em; 	font-size: 0.9em; } h1, h2, h3, h4, h5, h6, p { 	padding: 0; 	margin: 0 0 0.2em 0; } h2 { 	border-top: 3px double #ccc; 	border-bottom: 3px double #ccc; 	padding: 0.4em; 	margin-bottom: 1em; 	margin-top: 1em; } code { 	font-family: Courier New, Courier, Monospace; 	font-size: 1em; 	color: #666666; } acronym, abbr { 	border-bottom: 0; } /* Class Selectors */ div.hresume { 	position: relative; } ul.vcalendar li.vevent { 	list-style: none; 	list-style-image: none; } /* ID Selectors */ #lnhr-main { 	margin: 2em 3% 4em 3%; } #overview, div.profile-header div.actions { 	display: none; } #masthead { 	width: 40%; } #name { 	margin-bottom: 0; 	padding-bottom: 0; } #nameplate p.headline { 	margin-top: 0.4em; 	margin-bottom: 0; } #nameplate div.adr p.locality { 	margin-top: 0.4em; } #summary { 	margin-top: 2em; } #summary h2, #summary h3  { 	display: none; } #summary p.summary { 	position: absolute; 	top: 0; 	right: 0; 	width: 35%; 	font-size: 1.5em; 	-moz-border-radius: 1em; 	line-height: 1.1em; 	padding: 1em; 	background: #eee; 	margin-right: 15%; } #summary p.skills { 	clear: both; } #experience { 	overflow: hidden; } #experience ul.vcalendar { 	margin-left: 15em; } #experience ul.vcalendar li.experience { 	position: relative; 	margin-top: 1.6em; } #experience ul.vcalendar li.experience:nth-child(2n+1) { 	background-color: #eee; } #experience ul.vcalendar li.experience ul li { 	margin-top: 1em; } #experience ul.vcalendar li.experience p.period { 	position: absolute; 	top: 0; 	left: -15em; 	width: 10em; 	background: #eee; 	padding: 1em; 	height: 100%; } #experience ul.vcalendar li.experience p.period abbr.dtstamp, #experience ul.vcalendar li.experience p.period abbr.dtend { 	display: block; } #experience ul.vcalendar li.experience p.description { 	margin-top: 1em; } #experience ul.vcalendar li.experience p.organization-details { 	color: #999; 	font-size: 0.9em; } #project-description { 	-moz-border-radius: 1em; 	padding: 2em; 	background: #eee; 	margin: 2em 0 2em 0; } 
Article Request Count:
Initially released:
Posted here:
25 Oct 2008
Article modified:
01 Nov 2008

If there is a comment form at the Information URL, you may want to leave your comments/questions there for quicker feedback. Otherwise, comment away:

Commenting is closed for this article.

Commented (2)


all the divs are broken which means it does not generate valid xhtml. creates 11 errors.

Thanks vic,

Can you send me to an example? The script doesn’t attempt validate the contents of linkedin’s markup – if they add a div and it isn’t closed before the script is configured to stop parsing, that could happen.

Subscribe to this article's comments RSS feed. [ ? ]   View Recent Comments across the site.

You know you want to visit the Archives.




There are also tag clouds, 'cause those are fun.
Published with Textpattern