When i was exploring sitecore 8 version i found a very much helpful feature that sitecore team introduced is Versioned Layout.
Versioned Layout means you can have language specific layout. which you can specify for different language version of an item. For ex: English version of an item can have English version Layout, German version of an item can have German version Layout.
Why We required it?
As sitecore already provides language version for an item, so we can easily achieve multilingual site in sitecore. so, question comes in mind when we can use versioned layout?
When there is multilingual site with same layout structure we do not required versioned layout. but if specific to some language we want to change the whole UI of the site than we can now achieve it with the versioned layout.
As mentioned above, Language Version Layouts gives you the ability to create different layout definitions for each language version for an item. In Sitecore 8 there is now a Shared Layout tab and a Final Layout tab in the presentation details dialogue of an item as shown in below:
The Shared Layout section stores the renderings that are shared across all language versions of an item as it is currently running before sitecore 8. but if you have specified different renderings for specific language than you can found it at Final Layout tab. Thus the Final Layout details pane displays the final combination of presentation details, and determines what is rendered when viewing the current version of the item.
So, Versioned layouts make it possible to specify different layouts for different versions and languages of the same item.
as per discussion above, we can use versioned layouts when we need to have:
- Have different layouts for different languages.
- Publish a specific version with its own layout for a specific period.
Sitecore uses versioned layouts internally for various content-testing features, for example, to provide cross-language testing.
In the Standard fields of a versioned item, in the Layout section, two fields are for layouts:
- __Renderings – a shared field where you specify the common layout for all languages and versions of the item.
- __Final Renderings – a versioned field where you specify individual layouts for languages and versions of the item.
If you are interested, the following flow diagram shows in detail how Sitecore resolves which final layout to use for an item:
Click here to see the changes in sitecore api due to versioned layouts.
I will share a practical example on achiving different UI for different language version soon, till that you can share your knowledge on versioned layouts.
Do enjoy sitecore 🙂