The use case for this blog is to enable item-level fallback on all items based on any user-defined template (or based on any template located in a given folder).
Here are three steps you need to follow in order to set up the language fallback functionality in Sitecore:
- Enable site-level fallback in WebsiteApp_ConfigIncludeSitecore.LanguageFallback.config.
- Specify the Fallback Language for the language items located in sitecore/system/Languages.
- Either enable item-level fallback or field-level fallback per your need.
To enable fallback for all items of a given template, just set it on the template’s __Standard Values.
However, when there are too many templates to deal with, this task can become very tedious, so we are going to automate this process and perform a batch update using Sitecore PowerShell Extensions.
Here is my script:
Write-Host "Creating Standard Values items for:" -ForegroundColor green $Items = Get-ChildItem master: -ID "{GUID of the templates folder}" -Recurse | Where-Object {$_.TemplateName -eq 'Template'-and ` !$_.Children["__Standard Values"] } foreach($Item in $Items) { Write-Host $Item.Paths.Path $standardvalues = New-Item -Parent $Item -Name "__Standard Values" -type $Item.ID $Item.Editing.BeginEdit() $Item["__Standard values"] = $standardvalues.ID $Item.Editing.EndEdit() } Write-Host "Total number of items modified: " $Items.Count Write-Host "Enabling Item Level Fallback for:" -ForegroundColor green $Items = Get-ChildItem master: -ID "{ GUID of the templates folder }" -Recurse | Where-Object {$_.Name -eq '__Standard Values'-and ` $_.'__Enable item fallback' -eq $false } foreach($Item in $Items) { $Item.'__Enable item fallback' = $true $Item.Paths.Path } Write-Host "Total number of items modified: " $Items.Count
The first half of the script finds all templates within the given folder (such as a “User Defined Templates” folder), and creates a __Standard Values item for the templates that don’t already have one. The second half of the script goes through all the __Standard Values items that don’t have Enable Item Fallback checked and set them to true.
The paths of all modified items are printed to the console:
Creating Standard Values items for: /sitecore/templates/User Defined/Public/Carousels/FeaturedItemsCarousel True /sitecore/templates/User Defined/Public/Carousels/RecognitionCarousel True /sitecore/templates/User Defined/Public/Carousels/TimelineCarousel True … Total number of items modified: 39 Enabling Item Level Fallback for: /sitecore/templates/User Defined/Public/Careers/Statement Block/__Standard Values /sitecore/templates/User Defined/Public/Careers/Header Section/__Standard Values /sitecore/templates/User Defined/Public/Careers/Landing Hero Section/__Standard Values … Total number of items modified: 227
Now you efficiently have all items based on the templates in that folder enabled for fallback. Please feel free to let me know your thoughts and suggestions. Thanks!