When implementing your design within our pages, our preferred mechanism for including elements of your site's design, layout, menu/navigation, and other structural elements of your existing website is to proxy that content in transparently into our own site.

WhatsOnWhen has developed a sophisticated system for pulling in, caching, and inserting remote third-party elements into a page. Whenever possible, WhatsOnWhen will ask you to provide the elements of the page which provide your look and feel - headers, footers, menus, common site navigation, and other important blocks of content which will be managed by you as a part of your overall site on your own website.

Example uses of this include:

  • Including site header and footer information from the primary website into the design;
  • Importing specific page elements, highlights, and other forms of content directly into areas of the hosted solution
  • Extracting menu/navigation, required javascript, and other forms of information

Session-Specific Content

You can decide which URLs provide content which are specific to a user. By giving us a subdomain under your primary website's domain name, and allowing your cookies to be visible to all subdomains within that domain name, we can pass through requests on behalf of the user directly to your site for user-specific naviation, retaining all personalization, custom menuing, content, and other elements of data.

In order to determine which information in the session is appropriate, several sources of information can be used when proxying content. These include:

  • Inbound URI Parameters
    Information contained in inbound URIs to our site can be moved from the request into the session transparently; these parameters, which include language selections and other miscellaneous types of parameters you may wish to act/react on, are provided by you in your deep links into our site and your menus; we then pass that information through on to you in requests we make to you as URI parameters or as cookie data for your server to use when processing requests for proxied content. That information is maintained in the session until updated by another request to content in our site.
  • Browser Cookies
    Browser cookie information held on the user's browser can be passed through as cookies back to your service; these include any session cookies used by your application server, user identification cookies, language preferences, custom cookies created by your personalisation system, or any other data held in cookies that your application needs to see and process in order to provide content specific to that request. Content from cookies is freshly generated from the user's cookies on each request; when the user's cookie changes, so does our proxied request to you.

This information can be tracked and placed either into a URI or back into cookie information (or both) for your application to process, along with additional information from our own application, such as the current location, category, or article ID the content is being viewed from, location names, and other metadata from our system.

You can decide whether each request is cached, whether that cache is specific to the user, to the contents of specific cookies, or to the contents of specific request parameters, as well as caching that content for a period of time of your choice; anywhere from 1 to 72 hours is common.

Content retrieved in this way is proxied on behalf of the user by our servers; the requesting IP address will always be that of our application server, but we will attempt, whenever possible, to populate request data with the actual information from the user request.

Other Content

Content to be included which is not specific to a given user can be put on a global import cache which caches that content for a period of time of your choice; anywhere from 1 to 72 hours is common. This means that when your own content and navigation are updated, the content and navigation within our site are automatically updated with those changes.

Guidelines for Content Provision

HTML blocks should ideally be snippets - they should not include HTML HEAD, BODY, or other types of unusual content parts; the complete contents of the text you provide will be included at the specified location inside the page being served from the service. Our solution is capable of cutting out elements of content and only showing parts of that content; but that requires that you have easily located and reliable ways of doing so embedded within the HTML. We will work with you to come up with the best solution that meets your requirements and capabilities.

These HTML blocks, because they will be included in the hosted site, should contain absolute URL references to sites which are not on the hosted platform; for example, a link to an event may be a 'local' reference - however, a link to an image held on your server must be an absolute reference, fully qualified (e.g., http://hostname/path/to/file.jpg). Again, our solution is capable of changing local URL references to absolute ones; but the easiest way to control this is to ensure that the content you will provide to us contains the absolute references to the sites in question so that those links work without us guessing what the correct absolute path to that content is.

Image, javascript, and links should be tested in order to assure they are appropriately qualified before any changes are made to your hosted version of this content. It is critical, even though we are proxying your content, that you ensure that content changes made on your side do not cause problems with the live site; please work with us to notify us of impending changes by providing us staging URLs for your content; we can then provide you, in turn, with a staging version of your hosted content that you can review for compatibility and acceptability before you ship changes to your own website. In most cases, there will be no problem; however, changes to absolute width/height of provided headers, footers, and other content can affect page layout of the hosted platform and cause unusual visual results.