Trip, destination and guide pages
How pages built from Travel Orbit's templates are delivered, and how to render them with the SDK.
Reference2 min read
A space connected to Travel Orbit has three page templates: Trip page, Destination page and Guide page. Their addresses use {slug}, such as /trips/{slug}. When no CMS page has the address asked for, getPage and resolve answer with the matching template's blocks and the item from Travel Orbit, in one call.
What arrives
const page = await cms.getPage({ path: '/trips/lofoten-ridge-walk' });page.contentType; // "travelTripPage"page.travel; // { kind: "trip", slug: "lofoten-ridge-walk", trip: CmsTripPage }travelOf(page) returns { trip, destination, guide } with the one the page shows. Each section block, such as travelTripHero or travelGuideStory, also has the item in its fields as trip, destination or guide, so a registry renderer gets what it needs. Other blocks on the template arrive as usual. Search engine data, structured data and the sitemap are built from Travel Orbit.
Sections
travelTripHero, travelTripOverview, travelTripItinerary, travelTripBooking, travelTripGuides, travelTripStays, travelTripIncluded, travelTripGallerytravelDestinationIntro, travelDestinationFacts, travelDestinationGuide, travelDestinationTripstravelGuideProfile, travelGuideStory, travelGuideTrips| Template | Blocks |
|---|---|
| Trip page | travelTripHero, travelTripOverview, travelTripItinerary, travelTripBooking, travelTripGuides, travelTripStays, travelTripIncluded, travelTripGallery |
| Destination page | travelDestinationIntro, travelDestinationFacts, travelDestinationGuide, travelDestinationTrips |
| Guide page | travelGuideProfile, travelGuideStory, travelGuideTrips |
Each has an optional heading. Render them in the order they arrive: editors arrange them.
Images
Travel Orbit's images have the same shape as CMS images and the same address convention, so <CmsImage> serves smaller copies and AVIF without extra work.
Lists and links
getTravelTrips, getTravelDestinations and getTravelGuides return everything for trip finders and grids. Trips everywhere, on template pages, in fields and in getTravelTrips (which takes region), have priceFrom in the region's currency when the trip is sold in it, with currency saying which and tripCurrency the trip's own. Link with pageUrl, the item's page on your website; url is the booking site. Publishing a template refreshes every page; a changed trip refreshes its own page.
Changed addresses
When a trip's address name changes in Travel Orbit, or a guide's name and with it their address name, the old address keeps working: resolve answers with a permanent redirect (308) to the new one, such as /trips/lofoten-walk to /trips/lofoten-ridge-walk, and followResolution from the SDK follows it. getPage gives not found for the old address, like any page that has moved. Links and menu items that point at the trip follow the new address by themselves. Destinations keep their addresses, since they come from the country or continent.
When Travel Orbit is down
The last answer is used for up to a minute and longer while Travel Orbit cannot be reached. An item Travel Orbit has never answered for gives not found, so builds never break.
Was this page helpful?