Quantcast
Viewing all articles
Browse latest Browse all 31

Migrate renderings from SC7 to SC8

Image may be NSFW.
Clik here to view.
Sitecore PowerShell

To be able for each language versions of an item to have their own renderings in our Sitecore instance version 7.2, the __Renderings field shared option was set to false. This is not Sitecore Best Practice, but this is how it was solved. When migrating the content to Sitecore 8.2 I wrote a Power Shell script to migrate the rendering settings to the new __Final Rendering field. Our setup uses Language Fallback and all languages are configured to fallback on the EN language. Even the __Renderings field is Language Fallback enabled. First I took a copy of the SC72 environment to a new instance to avoid working with the live content. Then I installed the excellent PowerShell for Sitecore plugin and pasted the following code in the ISE interface. These are the steps in details:
  1. Export and import the __Final Renderings field item {04BF00DB-F5FB-41F7-8AB7-22408372A981} from SC8.2 to Stage 7.2 Change it to an ordinary single line text because SC72 cannot handle more than 1 layout field
  2. Copy all media using serialization and copy paste the files from prod to new instance. First clear the serialization folder on the server
  3. Copy all the content from the prod environemnt to the 7.2 stage environment Use Sitecore Package. Sitecore/Content/SITE add with Subitems. Use Replace
  4. SC72: Copy Renderings to the new Final Renderings field using the following script
[code language="xml"] $rootPath = "master:\content\SITE\Home" $emptyRendering = @" <r xmlns:p="p" xmlns:s="s" p:p="1" /> "@ # First copy EN renderings to the Final Renderings field to gain Language Fallback on the other languages $items = (Get-Item -Path $rootPath -Version * -Language en) + (Get-ChildItem -Path $rootPath -recurse -Version * -Language en) ForEach ($item in $items) { $Renderings = $item."__Renderings" if($Renderings -ne $null) { $item."__Final Renderings" = $Renderings Write-Host "Setting Final Renderings for item '$($item.ID)' language '$($item.Language)'" } } # Then copy language renderings to the Final Renderings field on the language versions in case it differ from the EN version $items = Get-ChildItem -WithParent -Path $rootPath -recurse -Version * -Language da-DK, de-AT, de-CH, de-DE, en-AU, en-GB, en-US, es-ES, fi-FI, fr-BE, fr-CH, fr-FR, it-IT, ko-KR, nb-NO, nl-BE, nl-NL, pt-BR, sv-SE, zh-CN ForEach ($item in $items) { Reset-ItemField -Item $Item -Name "__Final Renderings" -IncludeStandardFields # No need if first time to run $ENItem = Get-Item master: -ID $item.ID -Language en if($ENItem -ne $null) { $ENrenderings = $ENitem."__Renderings" } $Renderings = $item."__Renderings" if($Renderings -ne $null) { if($Renderings -ne $ENrenderings) { $item."__Final Renderings" = $Renderings Write-Host "Setting Final Renderings for item '$($item.ID)' language '$($item.Language)'" } if($Renderings -eq $emptyRendering) { Reset-ItemField -Item $item -Name "__Final Renderings" -IncludeStandardFields Write-Host "Reset Final Renderings for item '$($item.ID)' language '$($item.Language)'" } } } [/code] The script took about 1 hour to execute because of the large amount of content. The I exported all content by creating a SC package and imported it to the new SC82 instance. The media was serialized and reverted on the SC82 instance. Finally I run this clean up script in the SC82 environment to reset the language specific renderings on the EN item. [code language="xml"] $rootPath = "master:\content\SITE\Home" # Reset the Renderings Field on the EN version $items = Get-ChildItem -WithParent -Path $rootPath -recurse -Version * -Language en ForEach ($item in $items) { Reset-ItemField -Item $item -Name "__Final Renderings" -IncludeStandardFields } [/code]

Viewing all articles
Browse latest Browse all 31

Trending Articles


Emma och Hans Wiklund separerar


Dödsfallsnotiser


Theo Gustafsson


Katrin Ljuslinder


Rickard Olssons bröllopslycka efter rattfyllan


Sexbilderna på Carolina Neurath gjorde maken rasande


Öppna port för VPN tjänst i Comhems Wifi Hub C2?


Beröm för Frida som Carmen


Emilia Lundbergs mördare dömd till fängelse


Peg Parneviks sexfilm med kändis ute på nätet


518038 - Leif Johansson - Stockholms Auktionsverk Online


Martina Åsberg och Anders Ranhed har blivit föräldrar.


Klassen framför allt


Brangelinas dotter byter kön


Norra svenska Österbotten


Sanningen om Lotta Engbergs skilsmässa från Patrik Ehlersson


Arkitekt som satt många spår


Krysslösningar nr 46


Per MICHELE Giuseppe Moggia


Månadens konst - En egen olivlund!