Oh look, another test post
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sit amet varius justo. Aenean vitae ligula augue, non dapibus orci. Duis malesuada iaculis porttitor. Ut sit amet dignissim libero. Nullam non velit risus. Donec lacus elit, eleifend ac aliquam eget, aliquet in neque. Duis eget lorem eu magna ultrices lobortis. Pellentesque scelerisque congue faucibus. Aliquam gravida volutpat mauris quis dignissim. Maecenas laoreet sollicitudin congue. Praesent eu ligula at nulla lobortis blandit ac non quam. Pellentesque viverra, eros a scelerisque egestas, sem est vehicula elit, sit amet rhoncus odio erat sed tortor. Nulla facilisi. Phasellus euismod velit scelerisque tortor dignissim malesuada. In faucibus consequat diam, vitae consectetur magna adipiscing a. Aenean ut laoreet neque. Aenean fermentum mauris vitae elit sollicitudin sit amet sollicitudin odio condimentum. Vivamus eros ante, laoreet luctus fermentum ut, interdum eu diam. In hac habitasse platea dictumst. Aliquam leo metus, molestie at venenatis in, ullamcorper a turpis.
Morbi turpis justo, porttitor nec imperdiet ac, mollis non ipsum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque lobortis magna eu purus dapibus egestas. Integer posuere vestibulum fermentum. Nulla nisi sem, imperdiet sit amet tincidunt ac, fermentum eu odio. Cras ac nulla enim, non ullamcorper nibh. Ut aliquet, velit sit amet tempor molestie, elit metus faucibus risus, eget pharetra mi nibh vitae nibh. Etiam blandit diam vel est malesuada adipiscing. Nullam bibendum leo nec leo rhoncus pretium. Vivamus auctor, arcu ac consectetur laoreet, lorem purus condimentum lectus, sit amet laoreet purus metus vel lacus. Etiam in arcu neque, et tincidunt nulla. Donec ut sem vehicula felis molestie laoreet. Integer placerat aliquet lorem, nec aliquam purus pretium et. Sed commodo posuere consequat. Etiam purus massa, posuere non ultricies id, placerat vitae nisl. Aliquam erat volutpat. Donec sollicitudin, odio interdum euismod malesuada, odio nunc mollis urna, non vulputate nisl orci quis neque.
Quisque massa ipsum, ultricies vel aliquam eu, condimentum ut urna. Morbi ut adipiscing neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur blandit sapien sit amet lectus vehicula porta. Sed placerat blandit purus, id sagittis dui accumsan nec. Aliquam erat volutpat. Cras feugiat adipiscing semper. Phasellus imperdiet velit ac nibh tempus tincidunt. Vestibulum eu dui at sem aliquet bibendum. Nunc malesuada eleifend nisl vel pulvinar. In suscipit augue ut eros dapibus vel semper odio placerat. Vivamus id imperdiet lacus. Curabitur rhoncus pretium tortor sit amet aliquet. Sed non enim at nibh scelerisque ultricies. Fusce dictum magna et tortor vulputate et dictum sapien porttitor. Morbi facilisis imperdiet libero, id cursus nibh elementum ut. Nullam congue, dolor vitae bibendum porta, mauris purus rhoncus sapien, nec venenatis ante ante non quam. Duis convallis gravida dictum.
This is yet another test post
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sit amet varius justo. Aenean vitae ligula augue, non dapibus orci. Duis malesuada iaculis porttitor. Ut sit amet dignissim libero. Nullam non velit risus. Donec lacus elit, eleifend ac aliquam eget, aliquet in neque. Duis eget lorem eu magna ultrices lobortis. Pellentesque scelerisque congue faucibus. Aliquam gravida volutpat mauris quis dignissim. Maecenas laoreet sollicitudin congue. Praesent eu ligula at nulla lobortis blandit ac non quam. Pellentesque viverra, eros a scelerisque egestas, sem est vehicula elit, sit amet rhoncus odio erat sed tortor. Nulla facilisi. Phasellus euismod velit scelerisque tortor dignissim malesuada. In faucibus consequat diam, vitae consectetur magna adipiscing a. Aenean ut laoreet neque. Aenean fermentum mauris vitae elit sollicitudin sit amet sollicitudin odio condimentum. Vivamus eros ante, laoreet luctus fermentum ut, interdum eu diam. In hac habitasse platea dictumst. Aliquam leo metus, molestie at venenatis in, ullamcorper a turpis.
Morbi turpis justo, porttitor nec imperdiet ac, mollis non ipsum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque lobortis magna eu purus dapibus egestas. Integer posuere vestibulum fermentum. Nulla nisi sem, imperdiet sit amet tincidunt ac, fermentum eu odio. Cras ac nulla enim, non ullamcorper nibh. Ut aliquet, velit sit amet tempor molestie, elit metus faucibus risus, eget pharetra mi nibh vitae nibh. Etiam blandit diam vel est malesuada adipiscing. Nullam bibendum leo nec leo rhoncus pretium. Vivamus auctor, arcu ac consectetur laoreet, lorem purus condimentum lectus, sit amet laoreet purus metus vel lacus. Etiam in arcu neque, et tincidunt nulla. Donec ut sem vehicula felis molestie laoreet. Integer placerat aliquet lorem, nec aliquam purus pretium et. Sed commodo posuere consequat. Etiam purus massa, posuere non ultricies id, placerat vitae nisl. Aliquam erat volutpat. Donec sollicitudin, odio interdum euismod malesuada, odio nunc mollis urna, non vulputate nisl orci quis neque.
Test Post 4
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sit amet varius justo. Aenean vitae ligula augue, non dapibus orci. Duis malesuada iaculis porttitor. Ut sit amet dignissim libero. Nullam non velit risus. Donec lacus elit, eleifend ac aliquam eget, aliquet in neque. Duis eget lorem eu magna ultrices lobortis. Pellentesque scelerisque congue faucibus. Aliquam gravida volutpat mauris quis dignissim. Maecenas laoreet sollicitudin congue. Praesent eu ligula at nulla lobortis blandit ac non quam. Pellentesque viverra, eros a scelerisque egestas, sem est vehicula elit, sit amet rhoncus odio erat sed tortor. Nulla facilisi. Phasellus euismod velit scelerisque tortor dignissim malesuada. In faucibus consequat diam, vitae consectetur magna adipiscing a. Aenean ut laoreet neque. Aenean fermentum mauris vitae elit sollicitudin sit amet sollicitudin odio condimentum. Vivamus eros ante, laoreet luctus fermentum ut, interdum eu diam. In hac habitasse platea dictumst. Aliquam leo metus, molestie at venenatis in, ullamcorper a turpis.
Morbi turpis justo, porttitor nec imperdiet ac, mollis non ipsum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque lobortis magna eu purus dapibus egestas. Integer posuere vestibulum fermentum. Nulla nisi sem, imperdiet sit amet tincidunt ac, fermentum eu odio. Cras ac nulla enim, non ullamcorper nibh. Ut aliquet, velit sit amet tempor molestie, elit metus faucibus risus, eget pharetra mi nibh vitae nibh. Etiam blandit diam vel est malesuada adipiscing. Nullam bibendum leo nec leo rhoncus pretium. Vivamus auctor, arcu ac consectetur laoreet, lorem purus condimentum lectus, sit amet laoreet purus metus vel lacus. Etiam in arcu neque, et tincidunt nulla. Donec ut sem vehicula felis molestie laoreet. Integer placerat aliquet lorem, nec aliquam purus pretium et. Sed commodo posuere consequat. Etiam purus massa, posuere non ultricies id, placerat vitae nisl. Aliquam erat volutpat. Donec sollicitudin, odio interdum euismod malesuada, odio nunc mollis urna, non vulputate nisl orci quis neque.
Quisque massa ipsum, ultricies vel aliquam eu, condimentum ut urna. Morbi ut adipiscing neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur blandit sapien sit amet lectus vehicula porta. Sed placerat blandit purus, id sagittis dui accumsan nec. Aliquam erat volutpat. Cras feugiat adipiscing semper. Phasellus imperdiet velit ac nibh tempus tincidunt. Vestibulum eu dui at sem aliquet bibendum. Nunc malesuada eleifend nisl vel pulvinar. In suscipit augue ut eros dapibus vel semper odio placerat. Vivamus id imperdiet lacus. Curabitur rhoncus pretium tortor sit amet aliquet. Sed non enim at nibh scelerisque ultricies. Fusce dictum magna et tortor vulputate et dictum sapien porttitor. Morbi facilisis imperdiet libero, id cursus nibh elementum ut. Nullam congue, dolor vitae bibendum porta, mauris purus rhoncus sapien, nec venenatis ante ante non quam. Duis convallis gravida dictum.
Test Post 3
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel justo dui. Aenean dignissim hendrerit nunc et facilisis. Etiam sapien odio, vulputate vel ultrices vel, dictum eu mi. Ut consectetur felis ut metus porta et congue sapien mollis. Pellentesque turpis odio, accumsan sit amet elementum eu, egestas eget velit. Cras risus tortor, iaculis eu commodo tincidunt, aliquam sodales sapien. Fusce sed massa lectus. Quisque congue, ipsum sed condimentum porttitor, nisi magna laoreet nisl, eget tempus orci urna eu arcu. Morbi pretium lobortis metus in dignissim. Sed congue dignissim enim, non eleifend sapien aliquam at. Sed eget elit eu ipsum tristique tincidunt eget a erat. Cras dapibus, nunc vel commodo elementum, libero sapien sagittis urna, non eleifend sem tortor sed urna. Vestibulum sollicitudin blandit elit. Nulla non purus orci. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam velit orci, suscipit sit amet laoreet id, venenatis tincidunt lacus.
Sed a felis justo, eget aliquet dui. Proin aliquam rhoncus gravida. Donec vel metus felis. Nulla facilisi. Nulla viverra lorem diam. Suspendisse non arcu id odio mollis sodales. Vestibulum vel facilisis justo. Donec vestibulum erat sit amet massa mollis sagittis. Duis imperdiet, ligula sit amet malesuada luctus, velit sapien feugiat quam, quis blandit justo orci ut sem. Suspendisse viverra lobortis tellus, vel sagittis quam ornare ut.
Etiam a molestie dui. Vivamus at nisi sapien. Vestibulum tincidunt faucibus risus id porttitor. Donec sit amet augue et est pharetra cursus vel sit amet ligula. Nulla pellentesque elementum mauris sit amet tincidunt. Donec bibendum, lectus sit amet laoreet bibendum, tortor tortor tincidunt leo, ac mattis ante felis a tellus. Maecenas sollicitudin sapien ut augue auctor auctor. Praesent tristique ipsum nec mi rutrum blandit. Fusce sit amet quam eros. Donec a nisi ipsum. Fusce et elit metus. Suspendisse luctus nibh eget orci condimentum faucibus. Maecenas sem dui, adipiscing non egestas at, volutpat ac ipsum. Etiam bibendum facilisis erat quis placerat. Vestibulum in nunc purus, vitae pretium felis. Cras vulputate ornare nibh sed gravida.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut sollicitudin, tortor sed scelerisque aliquet, dui tellus facilisis magna, ut mattis magna metus eget ante. Suspendisse potenti. Integer eu diam a odio lacinia dapibus. Proin pharetra dignissim dolor at feugiat. Aliquam venenatis aliquet sapien eu aliquet. Aliquam tristique, ante nec vestibulum tristique, tortor nulla venenatis libero, sed tincidunt mi urna at leo. Suspendisse interdum viverra tellus, vel fermentum enim consectetur non. Sed mollis orci et nisl vulputate ullamcorper. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Iframes, SEO and the trouble with talking to the parents
In the world of HTML and front end development, the use of frames on web pages went out of fashion somewhere near the start of the last decade. Frames, while serving a function in the era of the pre-semantic web, fell from grace for a number of reasons, the first and second being, in no particular order, limited accessibility and zero search engine index-ability. There is in this day and age no excuse whatsoever for their use, as there are numerous alternatives to just about every purpose they were ever put to. Iframes, while having all of the same accessibility and SEO shortcomings of frames, are generally deemed to be more acceptable as they can sit on a perfectly index-able and accessible parent page. So long as the iframe is not holding the bulk of the main content, then the damage caused is diminished. As such, iframes are commonly employed in advertising, tracking and other marketing activities.
Ok, so… recently I was called upon to create a module that would sit on a CMS page. This was to be part of a new micro-site that would initially consist of twelve pages, eventually growing to about thirty pages. The module was to appear on five of the pages and would be fed by five XML files update-able by the client. We did not have the access to write any server side code on the CMS. We had to simply supply a snippet which would be entered into a free HTML area of the CMS to achieve the desired result. The module was essentially a carousel, that had a number of thumbnails underneath as shortcuts to various slides. Each slide could hold a number of different content types. It was a requirement that the page scroll to bring the carousel to the top of the viewport, if it was not already there, whenever a new slide in the carousel was selected. Also, the navigation between the slides on the carousel was fire an event on the CMS page as a metric that could be tracked with the analytics package they were using. The problems faced were therefore as follows:
- Content is dynamic – fed by XML files
- Server-side scripts can only be run from a different domain
- Module content would be the main content on the page
- Scroll page on interaction with the module
- Track carousel usage as a metric of the CMS page
A solution we decided to follow was one where the module was created and hosted on one of our servers and then embeded onto the CMS page using an iframe. The XML files were also hosted on the same server. We were therefore proposing that we would serve up the main content of a number of CMS pages via iframes, a complete no-no, as set out in the previous paragraphs. This was not ideal by any means but we were dealing with a number of restrictions that were themselves far from ideal.
So the page content was created on our server from the XML data, and placed onto each of the five CMS pages via iframes. There was still the requirement to scroll the parent page to the relevant position, and to track the interactions occuring within the iframe as page metrics of the parent page. This would involve some sort communication between the child frame content and the parent page. But the two are on different servers, on different domains. In newer browsers, we can use window.postMessage(), but what about the legacy browsers? Tricky! Or so I thought. There is a hack known as ‘Fragment ID messaging’ whereby the child frame writes a fragment onto the end of the parents url and the parent, by means of a setInterval() or setTimeout() watches for this every second or so. This little trick has been nicely made into a Dojo plugin and a jQuery plugin. Here was not a means of passing events messaging from the child to the parent. Perfect!
Not so fast. about a week after going live, the client noticed that we were listed on the second page of Google for the main keywords that were required. The was deemed unacceptable and the blame immediately fell onto the use of iframes. Though the proportion of pages within the micro-site that used the module was about 40%, this would fall as the site grew with other content. The simple solution was to put more index-able content on those parent pages containing the iframes.
Going forward, a solution was required that would allow the use of the module, whilst allowing its content to index-able. I read in various places that the Googlebot had the ability to read content that was written to the page using the archaic document.write() method. With this in mind, I rewrote my PHP script to compose the module from the XML and store output it as JSONP. Though would allow me to read the data and place it straight onto the CMS page using document.write(). Though this appeared to solve the problem, I could not get definitive information on the veracity of the information that document.write() was readable by Google. It also had to be remembered that Google was not the only search engine out there. Because of this, we could not have sufficient confidence in this solution to carry on with it.
Ultimately the best way to get content indexed is to have it as part of the HTML from the start, and in this instance this requires the module to appear directly on the page. I modified the PHP script again so that the client could update the XML, the script would show a preview of the module as well as the embed code that the client could copy and paste directly into the CMS. This embed code would place the module directly onto the page. This is where I am at the moment, I will return to document any further progress i make.



