Skiweekends.com is part of Harris Holidays. They have been organising tailor-made trips for groups and individuals for over 30 years. The aim at Skiweekends.com is to help you ski when, where and for as long as you want, to some of the best and well known ski areas in Europe. They now offer more choice than ever before with travel possible from 17 UK airports to a full range of 2-5* chalets and hotels.
- 2014 Sitecore Experience Awards - Winner - Best Travel & Hospitality Website
- 2014 E-commerce Award - Winner - Best Travel & Holidays E-commerce Website
- 2014 Travolution Awards - Winner - Best Website User Experience
- 2014 TravelMole Awards - Winner - Best Sports Travel & Tourism Website
- 2014 Travolution Awards - Finalist - Best Sports Tour Operator Website
Every page on Skiweekends has a totally customisable layout from the ground up. We provide a set of base templates which gave the homepage, left-hand column, right-hand column, three column, full-width layouts but you could build the pages however you like. For example the homepage you could build in about ten minutes from the ground up.
The resorts page is one of the key pages on the website. Like the homepage it is entirely customisable, however, for the most part, the resort pages look the same. As mentioned in the data section below many aspects of this are hybrids of data from a booking engine and our own Sitecore information. This page groups together all the hotels for the given Resort, as you can see there is two ways to get to the hotels via the hotels for Resort list on the left-hand side and the accommodation tab. The price automatically gets generated based on the lowest price across all hotels in the resort. Equipment and Pass hire is imported from an Excel file on the website and automatically displayed for the given resort/hotel.
The hotel page is linked to from price grid, resorts and search results. It provides a single location to view all information about a hotel in a resort/region. If you view the page via a search you get a giant book bar in the middle allowing the user to immediately start the purchase process if they like the hotel. Normally that bar is not displayed as we don't know what date/criteria the user will want to use. The reviews system is built into Sitecore and takes advantage of an existing page that users get sent to for providing feedback on their trip. This is then displayed on the individual hotel pages as we prepopulate the hotel and resort IDs when the user clicks the feedback link. Google Maps is leverage to show the location and high-level information is surfaced from the booking engine and Sitecore for the user.
The search results are a hybrid provided by the third party booking provider and our own css/html. This includes the search box on the left-hand side. We do a number of things the booking system doesn't know what the URL will be for the hotel so we have a middle page which maps the hotel IDs provided by the search to a user-friendly hotel URL. The search box can be pre-populated like you would with personalisation, allowing a user who arrived from say Google PPC to instantly have the resort or hotel selected in the search box. It also has the ability to list out related hotels/resorts for a given search result to cross-sell across regions.
Everything beyond the search page on Skiweekends is run by a third party booking system. This also means that all pricing information, hotel and resort information is also with this third party. The data is exposed to us via two web services, however, this information as you might imagine is quite a large dataset. On the Sitecore side, we have a singleton class which is responsible for going to the web services, aggregating the information from multiple calls and storing the data in an in-memory cache. This is written with thread blocking due to a large amount of data allowing multiple user threads to all run this same set of code has a large performance impact. Ordinarily thread blocking on a website is really bad however in this instance the small trade-off in performance on an empty cache is worth it versus the massive impact of pulling in all the data times however many users are on site. The cache is an in-memory object cache which is then used to generate all pricing, resort, hotel data, but usually, this is then combined with information stored in Sitecore due to the booking system not having all the information we need to present the hotel/resorts in a nice way.