How do you syndicate navigation?

This is a “how to?” article, not to be confused with a “how to:” article. Instead of telling you how to do something I’m hoping you will tell me. :-) I’ve tried asking numerous times in various places and have either gotten ignored or received inadequate answers, likely because it was difficult to describe the problem. By posting here I hope to clearly describe my needs so that I can solicit advice.

I manage a website [www.ubuntu.com](http://www.ubuntu.com) that has two types of navigation that change periodically. The website is actually spread across several different domains and more than one content management system. This is done because the content is managed by different groups of users and/or by multiple applications. For example, [www.ubuntu.com](http://www.ubuntu.com) and the employment website at [webapps.ubuntu.com/employment](http://webapps.ubuntu.com/employment). The goal is for users to not notice when they switch from one site to the other. The transition should be seamless. It’s very difficult.

The problem is that when the navigation changes on one site it has to be changed on all the other sites too. The navigation I’m referring to is the drop down navigation atop the page, the left side-bar navigation that changes for each area of the site, and also there’s a “masthead” banner that differs for each section of the site. The banner changes periodically. For example, on the [employment](http://webapps.ubuntu.com/employment/) website it says, “Get Certified Ubuntu Training.”

The end result would look something like this:

* User creates a new page on www.ubuntu.com
* Page appears instantly in navigation on www.ubuntu.com
* Soon (or immediately) the page also appears in the relevant navigation on the other sites

Here are some things I’ve experimented with and the problems:

* Ajax – Since I control the source site doing a script include is a suitable workaround to cross domain limitations. <script src=”http://www.ubuntu.com/navigation.js”></script> for example. But the problem with this is two fold: the navigation would be invisible to search engines, and I firmly believe the Ubuntu sites should be easily searchable by whatever engine users like. Also loading inline javascript like this would either slow the page down because the js would have to load and excute before browser loading could continue (to get instant navigation) or the navigation would have to be loaded after page load/rendering (asynchronously) causing a delay before the navigation appears.
* Iframes – I’d also be OK with this, too, but there’s a problem with iframes with unknown heights when the iframes exist on different domains (even subdomains). There’s no reliable way for a script on one site to determine the page height of a page from another domain loaded into an iframe. If the height of the iframe’s contents are unknown then the contents may scroll or leave a large gap after the content.

Here are further complications:

* Servers are isolated from each other. For security reasons at least some of the servers hosting content are inaccessible to each other for security reasons. So server A can’t ping server B, nor can it grab an rss feed or other such thing. Generally speaking, the servers cannot see the world at large either.
* The main site is drupal and is managed by a team of people, some of whom are not experienced webmasters. They want to simply create pages and have them show up in the site’s navigation in the normal drupal way.
* Flash is not an option

I’m eager to hear any suggested solutions.

Leave A Comment