Mapping Bootstrap Grid ParamĂštres / Blogs / Ferfient

Intro 
Tout en travaillant sur un projet rĂ©cent pour migrer une solution Sitecore 9.1 Ă Sitecore XM Cloud, une situation intĂ©ressante est apparue avec les paramĂštres de la grille bootstrap. Plus prĂ©cisĂ©ment, avec des paramĂštres de rendu de grille configurĂ©s sur les rendus migrĂ©s de lâarborescence de contenu Legacy 9.1 dans lâarborescence de contenu XM Cloud.
Pour commencer, quelques antĂ©cĂ©dents (brefs?) Sxa et le systĂšme de grille. SXA comprend plusieurs systĂšmes de grille Ă lâextĂ©rieur de la boĂźte (rĂ©fĂ©rence), y compris bootstrap 4 (BS4) et bootstrap 5 (BS5). Ces systĂšmes de grille permettent aux dĂ©veloppeurs de construire des dispositions rĂ©actives dâune maniĂšre cohĂ©rente et prĂ©visible. Lors de lâajout dâun nouveau site sans tĂȘte dans XM Cloud, BS5 est le systĂšme de grille par dĂ©faut (rĂ©fĂ©rence). Les Ă©lĂ©ments de support Sitecore pour les diffĂ©rents systĂšmes de grille peuvent ĂȘtre trouvĂ©s dans lâarbre de contenu sous / Sitecore / System / ParamĂštres / fonctionnalitĂ© / accĂ©lĂ©rateur dâexpĂ©rience (BS4 et BS5 sont mis en Ă©vidence dans la capture dâĂ©cran ci-dessous, mais il y en a dâautres):
Le ou les systĂšmes de grille quâun site utilise peut ĂȘtre configurĂ© sur le site ParamĂštres Article, par exemple, / Sitecore / Content / Test Site Collection / Site sans tĂȘte A / ParamĂštres:
Lors de la modification dâun rendu sur une page dans lâĂ©diteur de contenu, lâexpĂ©rience de lâĂ©diteur ou des pages cloud XM (qui Ă©tait rĂ©cemment mis Ă jour ), les auteurs de contenu peuvent configurer la grille et dĂ©finir des choses comme les tailles de colonne, les dĂ©calages, lâordre, etc .:
Ces paramÚtres de la grille sont stockés comme un seul paramÚtre de rendu nommé GridParameters
associĂ© au rendu des parents dans la page Rendu et / ou Rendements finaux champ. Par exemple, en supposant un RĂ©cipient le rendu a le Taille ParamĂštres reprĂ©sentĂ©s dans lâanimation ci-dessus (ce qui signifie: mobile | Taille | 12), la valeur brute du rendu dans les dĂ©tails de prĂ©sentation ressemblerait Ă ceci:
<r uid="{FE9A8A21-02C7-4EB0-B1B1-DF67ADD29ADD}" ... s:par="?Styles=%7b6221E315-B00F-4832-9054-B46F347EC247%7d&GridParameters=%7b7465D855-992E-4DC2-9855-A03250DFA74B%7d&DynamicPlaceholderId=1" s:ph="headless-main" />
Le s:par
Lâattribut stocke une chaĂźne de requĂȘte codĂ©e par URL contenant les paramĂštres de rendu. La valeur de GridParameters
est «% 7B7465D855-992E-4DC2-9855-A03250DFA74B% 7D», ou, lorsque URL dĂ©codĂ©, «{7465D855-992E-4DC2-9855-A03250DFA74B}». Cela ressemble beaucoup Ă un ID dâarticle Sitecore, non?
Notez que, sâil y avait plus dâun paramĂštre de grille,
GridParameters
Ce serait une chaĂźne dâID dĂ©limitĂ© («|»).
LâID pointe vers lâĂ©lĂ©ment de dĂ©finition de la taille de la grille situĂ© Ă (dans ce cas, pour BS5) / Sitecore / System / Settings / Feature / Experience Accelerator / Bootstrap 5 / bootstrap 5 DĂ©finition de grille / Extra Small / Size / 12. Enfin, dans le cadre de la dĂ©finition de lâĂ©lĂ©ment de taille, la classe Bootstrap CSS applicable est spĂ©cifiĂ©e dans le Classe champ. Câest cette classe (ou des classes, si plusieurs paramĂštres de grille sont spĂ©cifiĂ©s) qui est appliquĂ© au balisage lorsque le composant est rendu dans lâinterface utilisateur.
Pour un exemple un peu plus «monde réel», supposons un Récipient Le rendu avait (BS5) des paramÚtres de grille qui ressemblaient à ceci:
La valeur du GridParameters
Le paramĂštre de rendu serait:
<r uid="{FE9A8A21-02C7-4EB0-B1B1-DF67ADD29ADD}" ... s:par="GridParameters=%7B7465D855-992E-4DC2-9855-A03250DFA74B%7D%7C%7B597223E6-B7EE-4D86-BC89-F7DA3DE8A7E5%7D%7C%7B7D865A50-F089-421E-ACDC-620DB03BC49D%7D&FieldNames&BackgroundImage&Styles=%7B6221E315-B00F-4832-9054-B46F347EC247%7D&RenderingIdentifier&CSSStyles&DynamicPlaceholderId=1" s:ph="headless-main" />
Qui, dĂ©codĂ© par URL serait: «{7465d855-992e-4dc2-9855-a03250dfa74b} | {597223e6-b7ee-4d86-bc89-f7da3de8a7e5} | {7d865a50-f089-421e-acdc-620db03bc49dâ.
Le JSON retiré du service de mise en page pour le rendu ressemblerait à ceci:
... "uid": "fe9a8a21-02c7-4eb0-b1b1-df67add29add", "componentName": "Container", "dataSource": "", "params": { "GridParameters": "col-12 col-md-10 col-xl-5", // <=== HERE "Styles": "container", "DynamicPlaceholderId": "1", "FieldNames": "Default" } ...
Et, enfin, le balisage qui en résulterait ressemblerait à ceci:
<div class="col-12 col-md-10 col-xl-5"> ... </div>
Pour le reste de ce post, supposons ce qui suit:
- La solution Legacy 9.1 a utilisé BS4.
- La solution XM Cloud a utilisé BS5 (mais supportée BS4).
- Les rendus Legacy 9.1 ont été migrés vers XM Cloud (et convertis en rendu JSON).
- Les rendus migrĂ©s ont Ă©tĂ© mis en Ćuvre et apparaissent comme prĂ©vu dans lâinterface utilisateur de lâapplication de tĂȘte, avec le attendu / correct CLASSES DE GRID CSS.
Le problĂšme
âïž
Dâaccord, alors quel est le problĂšme? Nous avons BS4 et BS5 disponibles dans XM Cloud et les rendus migrĂ©s Ă©mettent les styles de grille corrects dans le balisage (par exemple, col-12
). Quel est le problĂšme?
Le problĂšme est survenu lorsque les auteurs de contenu sont allĂ©s afficher et / ou mettre Ă jour les paramĂštres de style de grille, soit dans lâĂ©diteur de contenu, lâĂ©diteur dâexpĂ©rience ou les pages cloud XM. Il nây avait pas dâerreur ou quoi que ce soit, mais rien est apparu dans le Grille Onglet ou le AvancĂ© onglet Lors de la modification des paramĂštres de rendu pour le rendu, comme si les paramĂštres nâĂ©taient pas là ⊠.
Lors de la visualisation des valeurs brutes du Rendu et Rendements finaux champs de la page, le GridParameters
Le paramĂštre Ă©tait clairement prĂ©sent â alors pourquoi rien nâapparaissait dans lâinterface utilisateur dâĂ©dition pour les auteurs de contenu?
La cause 
Comme vous lâavez peut-ĂȘtre dĂ©jĂ devinĂ© (et, oui, cela semble Ă©vident maintenant), la raison en Ă©tait que Les ID dâĂ©lĂ©ment rĂ©fĂ©rencĂ©s dans le paramĂštre de rendu de la grille sont diffĂ©rents entre BS4 et BS5, MĂȘme pour deux Ă©lĂ©ments de dĂ©finition de la taille de la grille avec la mĂȘme classe CSS. Par exemple, le col-12
Article pour BS4 (/ Sitecore / System / Settings / Feature / Experience Accelerator / Bootstrap 4 / bootstrap 4 DĂ©finition de grille / Extra Small / Size / 12) nâavait pas la mĂȘme piĂšce dâidentitĂ© que le correspondant col-12
Article dans BS5 (/ Sitecore / System / Settings / Feature / Experience Accelerator / Bootstrap 5 / bootstrap 5 Définition de grille / Extra Small / Size / 12).
Parce que la nouvelle solution XM Cloud avait Ă la fois les Ă©lĂ©ments de support BS4 et BS5 disponibles sous / Sitecore / System / ParamĂštres / fonctionnalitĂ© / accĂ©lĂ©rateur dâexpĂ©rienceles classes BS4 Grid CSS passaient encore dans lâinterface utilisateur. Cependant, lors de lâĂ©dition, le modal des paramĂštres de rendu sâattendait Ă ce que les ID BS5 (puisque le site a Ă©tĂ© configurĂ© pour utiliser BS5) pour lier les contrĂŽles dâĂ©dition. Ătant donnĂ© quâaucun ID de paramĂštre BS5 nâa Ă©tĂ© trouvĂ©, les contrĂŽles dâĂ©dition dans le modal nâĂ©taient pas liĂ©s aux valeurs correctes et semblaient cassĂ©s pour les auteurs de contenu.
La solution 
Comme dâhabitude, Extensions de PowerShell Sitecore (Spe) Ă la rescousse. Un script PowerShell a Ă©tĂ© Ă©crit pour itĂ©rer sur les rendus de page, mappez les ID de paramĂštre Bootstrap 4 Ă leurs ID de paramĂštre Bootstrap 5 Ă©quivalents basĂ©s sur une correspondance de nom de classe CSS, si possible, puis enregistrez les paramĂštres de rendu mis Ă jour vers la page.
Dans certains cas, il nâa pas Ă©tĂ© possible de cartographier les paramĂštres entre les deux systĂšmes de grille car il y a des changements de rupture entre BS4 et BS5. Dans BS4, par exemple, certains Commande des dĂ©finitions existent qui nâexistent pas dans BS5, câest-Ă -dire, / Sitecore / System / Settings / Feature / Experience Accelerator / Bootstrap 4 / bootstrap 4 DĂ©finition de grille / Extra Small / Order / 6.
Heureusement, dans le cas de ce projet particulier, la grande majorité des paramÚtres avaient un équivalent BS5 et ont été remappés par la tendance, permettant aux paramÚtres de rendu modal de refléter correctement les paramÚtres de réseau actuels pour les auteurs de contenu.
Le script 
Mise Ă jour-grudParameters.PS1
Quelques faits saillants du script et comment cela fonctionne:
- Le script est destinĂ© Ă ĂȘtre exĂ©cutĂ© via lâinterface PowerShell ISE dans Sitecore.
- Mettre Ă jour le -Chemin paramĂštre en fonction de lâendroit oĂč vivent vos pages de contenu dans lâarbre; Je recommanderais dâexĂ©cuter le script sur un sous-ensemble dâĂ©lĂ©ments initialement.
- Le script Ă©met un rapport en utilisant le Show-listview commander qui Ă©numĂšre quels rendements et paramĂštres ont Ă©tĂ© mis Ă jour (ou que ne le fera pas ĂȘtre mis Ă jour); Le rapport peut ĂȘtre exportĂ© si vous en avez besoin, disons, de le joindre Ă un Ă©lĂ©ment de travail dans Azure DevOps ou Jira.
- Si un ID de paramĂštre de rendu de grille ne peut pas ĂȘtre mappĂ© sur un ID BS5 ou si lâID candidat nâest pas un ID BS4 (y compris si câest dĂ©jĂ Un ID BS5), puis il est sautĂ© mais apparaĂźt toujours dans le rapport.
- Garder le -Et si DĂ©finissez jusquâĂ ce que vous soyez prĂȘt Ă appliquer les mises Ă jour.
Voici le script:
Function Update-GridParameters { <# .SYNOPSIS Maps Bootstrap 4 grid rendering parameters to Bootstrap 5 grid rendering parameters. .DESCRIPTION This function maps Bootstrap 4 grid rendering parameter IDs to their Bootstrap 5 equivalent rendering parameter IDs, if possible. .NOTES Nick Sturdivant | Perficient | nick.sturdivant@perficient.com | https://www.linkedin.com/in/nicksturdivant/ #> param ( [Parameter()] [String] $Path, [Parameter()] [Switch] $WhatIf ) BEGIN { Write-Host "Beginning $($MyInvocation.MyCommand)" } PROCESS { # get bootstrap 4 grid parameter definitions $bs4GridParameters = Get-ChildItem -Path "/sitecore/system/Settings/Feature/Experience Accelerator/Bootstrap 4/Bootstrap 4 Grid Definition" -Recurse ` | Where-Object { $_.TemplateID -eq "{CB3B3906-BE80-4D9B-A2A4-038193DA5422}" # /sitecore/templates/Foundation/Experience Accelerator/Grid/Grid Definition Items/Class } # get bootstrap 5 grid parameter definitions $bs5GridParameters = Get-ChildItem -Path "/sitecore/system/Settings/Feature/Experience Accelerator/Bootstrap 5/Bootstrap 5 Grid Definition" -Recurse ` | Where-Object { $_.TemplateID -eq "{CB3B3906-BE80-4D9B-A2A4-038193DA5422}" # /sitecore/templates/Foundation/Experience Accelerator/Grid/Grid Definition Items/Class } # build mapping $bs4To5Mappings = @() foreach ($bs4GridParameter in $bs4GridParameters) { # match bootstrap 5 parameter based on class name $bs5GridParameter = $bs5GridParameters | Where-Object { $_.Fields["Class"].Value -eq $bs4GridParameter.Fields["Class"].Value } if ($null -ne $bs5GridParameter) { $bs4To5Mappings += [PSCustomObject]@{ BS4Id = $bs4GridParameter.ID BS4Class = $bs4GridParameter.Fields["Class"].Value BS5Id = $bs5GridParameter.ID BS5Class = $bs5GridParameter.Fields["Class"].Value } } } $report = @() Write-Host "Processing $Path..." -ForegroundColor Cyan # get children based on path parameter, filtering to only those items with a rendering defined in their final layout $items = Get-ChildItem -Path $Path -Recurse | Where-Object { ($null -ne (Get-Rendering -Item $_ -FinalLayout)) } foreach ($item in $items) { $renderings = Get-Rendering -Item $item -FinalLayout if ($null -ne $renderings) { foreach ($rendering in $renderings) { # get grid rendering parameter $renderingParameter = Get-RenderingParameter -Rendering $rendering -Name "GridParameters" if ($null -ne $renderingParameter) { Write-Host "Processing grid rendering parameters on item $($item.ID), rendering $($rendering.UniqueId)..." -ForegroundColor Green $gridParametersIdString = $renderingParameter["GridParameters"] if (-not [string]::IsNullOrWhiteSpace($gridParametersIdString)) { $gridParameterIds = $gridParametersIdString.Split("|") $newGridParameterIds = @() foreach ($gridParameterId in $gridParameterIds) { # check if the parameter is bootstrap 4 $mappedParameter = $bs4To5Mappings | Where-Object { $_.BS4Id.ToString() -eq $gridParameterId } | Select-Object -First 1 if ($null -eq $mappedParameter) { $message = "Grid parameter ID $gridParameterId is not a Bootstrap 4 parameter that can be mapped to a Bootstrap 5 parameter, retaining original ID." Write-Host $message -ForegroundColor Yellow $report += @{ ItemId = $item.ID ItemPath = $item.FullPath RenderingItemId = $rendering.ItemID RenderingUniqueId = $rendering.UniqueId CurrentGridParameterId = $gridParameterId MappedGridParameterId = "N/A" GridClassName = "N/A" Notes = $message } $newGridParameterIds += $gridParameterId # process next parameter continue } # map to bootstrap 5 parameter $report += @{ ItemId = $item.ID ItemPath = $item.FullPath RenderingItemId = $rendering.ItemID RenderingUniqueId = $rendering.UniqueId CurrentGridParameterId = $gridParameterId MappedGridParameterId = $mappedParameter.BS5Id.ToString() GridClassName = $mappedParameter.BS5Class Notes = "Mapping Bootstrap 4 grid parameter ID $gridParameterId to Bootstrap 5 grid parameter ID $($mappedParameter.BS5Id.ToString())." } $newGridParameterIds += $mappedParameter.BS5Id.ToString() } $newGridParametersIdString = $newGridParameterIds -join "|" Write-Host "Current: $gridParametersIdString" Write-Host "Mapped: $newGridParametersIdString" if ($gridParametersIdString -eq $newGridParametersIdString) { Write-Host "Current and mapped grid parameters match, skipping update..." -ForegroundColor Yellow # process next rendering continue } # set new rendering parameter $setMessage = "Setting new grid parameters on item $($item.ID) ($($item.FullPath)), rendering $($rendering.UniqueId)..." Write-Host $setMessage -ForegroundColor Yellow $newGridParameters = [Ordered]@{"GridParameters" = $newGridParametersIdString } $report += @{ ItemId = $item.ID ItemPath = $item.FullPath RenderingItemId = $rendering.ItemID RenderingUniqueId = $rendering.UniqueId CurrentGridParameterId = $gridParametersIdString MappedGridParameterId = $newGridParametersIdString GridClassName = "" Notes = "$setMessage ($gridParametersIdString ==> $newGridParametersIdString)" } if (-not $WhatIf) { # update new grid parameters and then update the rendering $rendering | Set-RenderingParameter -Parameter $newGridParameters | Set-Rendering -Item $item -FinalLayout } } } } } } # display report $report | Show-ListView -Property @{ Label = "Item ID"; Expression = { $_.ItemId } }, @{Label = "Item Path"; Expression = { $_.ItemPath } }, @{Label = "Rendering Item ID"; Expression = { $_.RenderingItemId } }, @{Label = "Rendering Unique ID"; Expression = { $_.RenderingUniqueId } }, @{Label = "Current Grid Parameter ID"; Expression = { $_.CurrentGridParameterId } }, @{Label = "Mapped Grid Parameter ID"; Expression = { $_.MappedGridParameterId } }, @{Label = "Grid Class Name"; Expression = { $_.GridClassName } }, @{Label = "Notes"; Expression = { $_.Notes } } } END { Write-Host "Ending $($MyInvocation.MyCommand)" } } # 1. Change the Path parameter as necessary, depending on where the content pages are in the tree. # 2. Use the -WhatIf switch to preview the changes; remove the switch to update the renderings and pages. Update-GridParameters -Path "/sitecore/content/Test Site Collection/Headless Site A" -WhatIf
Script bonus 
Mon collĂšgue (et MVP Sitecore) Eric Sanner Il est arrivĂ© dâĂ©crire un script similaire rĂ©cemment. Je ne peux ni confirmer ni nier que nous avons Ă©crit tous les deux deux scripts pour faire la mĂȘme chose Ă peu prĂšs au mĂȘme moment. Son script peut ĂȘtre trouvĂ© ci-dessous et illustre une autre approche pour rĂ©soudre le mĂȘme problĂšme. Merci pour le partage, Eric!
Bs4tobs5.ps1
<# .SYNOPSIS Update Final Layouts .DESCRIPTION Find bootstrap4 grid settings in final layout and convert to bootstrap5 .NOTES Eric Sanner | Perficient | eric.sanner@perficient.com | https://www.linkedin.com/in/ericsanner/ #> #BEGIN Config $database = "master" $allowDelete = $false #END Config #BEGIN Helper Functions function Write-LogExtended { param( [string]$Message, [System.ConsoleColor]$ForegroundColor = $host.UI.RawUI.ForegroundColor, [System.ConsoleColor]$BackgroundColor = $host.UI.RawUI.BackgroundColor ) Write-Log -Object $message Write-Host -Object $message -ForegroundColor $ForegroundColor -BackgroundColor $backgroundColor } function Strip-Html { #https://www.regular-expressions.info/lookaround.html#lookahead Replaces multiple spaces with a single space param ( [string]$text ) $text = $text -replace '<[^>]+>',' ' $text = $text -replace " (?= )", "$1" $text = $text.Trim() return $text } function Truncate-Output { param ( $obj, $maxLeng ) $ret = ""; if($obj -ne $null) { $str = $obj.ToString().Trim() $leng = [System.Math]::Min($str.Length, $maxLeng) $truncated = ($str.Length -gt $maxLeng) $ret = $str.Substring(0, $leng) if($truncated -eq $true) { $ret = $ret + "..." } } return $ret } #END Helper Functions #BEGIN Sitecore Functions function Get-SitecoreItemById { param( [string]$id ) return Get-Item -Path $database -ID $id -ErrorAction SilentlyContinue } function Update-SitecoreItem { param( [Sitecore.Data.Items.Item]$item, [System.Collections.Hashtable]$updates ) if($item -eq $null) { Write-LogExtended "[E] Error updating item $($item) - Item is null" Red return } if($updates -eq $null) { Write-LogExtended "[E] Error updating item $($item) - Update hashtable is null" Red return } $changeDetected = $false $foregroundColor = "Green" Write-LogExtended "[I] Updating Item $($item.ID) - $($item.Name)" $item.Editing.BeginEdit() foreach($key in $updates.GetEnumerator()) { if($item.($key.Name) -ne $null) { $output = "Field Name '$($key.Name)' Current Value: '$(Truncate-Output $item.($key.Name) 40)' New Value: '$(Truncate-Output $key.Value 40)'" if($item.($key.Name) -ne $key.Value) { Write-LogExtended "[U] $($output)" $item.($key.Name) = $key.Value $changeDetected = $true } else { Write-LogExtended "[-] $($output)" } } } $itemModified = $item.Editing.EndEdit() if($changeDetected -ne $itemModified) { $foregroundColor = "Red" } Write-LogExtended "[I] Change Detected: $($changeDetected) Item modified $($itemModified)" $foregroundColor } #END Sitecore Functions #BEGIN Conversion Functions function ProcessItem { param( [Sitecore.Data.Items.Item]$item ) Write-LogExtended "[I] Processing item $($item.ID): $($item.ItemPath)" $gridPattern = "GridParameters=%7B(\w{8}-\w{4}-\w{4}-\w{4}-\w{12})%7D" $bs4Pattern = "Bootstrap 4" $finalRenderings = $item["__Final Renderings"] $finalRenderingsNew = $item["__Final Renderings"] $gridRenderings = @{} $gridMatches = Select-String -InputObject $finalRenderings -Pattern $gridPattern -AllMatches foreach($gridMatch in $gridMatches.Matches) { if(!$gridRenderings.ContainsKey("$($gridMatch.Groups[1].Value)")) { $gridRenderingItem = Get-SitecoreItemById $gridMatch.Groups[1].Value $gridRenderings["$($gridMatch.Groups[1].Value)"] = $gridRenderingItem.ItemPath } } foreach($rendering in $gridRenderings.GetEnumerator()) { $bs4Matches = Select-String -InputObject $rendering.Value -Pattern $bs4Pattern if($bs4Matches) { Write-LogExtended "[I] Found BS4 GridParams $($rendering.Value)" -ForegroundColor "Red" $bs4Items.Add($item.ID, $item.Path) if($bs4ToBs5Mapping.ContainsKey($rendering.Name)) { Write-LogExtended "[I] Mapping $($rendering.Name) to $($bs4ToBs5Mapping[$rendering.Name])" -ForegroundColor "Green" $finalRenderingsNew = $finalRenderingsNew -replace $rendering.Name, $bs4ToBs5Mapping[$rendering.Name] } else { Write-LogExtended "[E] No Mapping Found for $($rendering.Name)" -ForegroundColor "Red" } } } if($update -and $finalRenderings -ne $finalRenderingsNew) { $updates = @{} $updates.Add("__Final Renderings", $finalRenderingsNew) Update-SitecoreItem $item $updates } } #END Conversion Functions #BEGIN Main $update = $true $bs4Items = @{} $bs4ToBs5Mapping = @{} #/sitecore/system/Settings/Feature/Experience Accelerator/Bootstrap 4/Bootstrap 4 Grid Definition/Extra small/Size/12 -> /sitecore/system/Settings/Feature/Experience Accelerator/Bootstrap 5/Bootstrap 5 Grid Definition/Extra small/Size/12 $bs4ToBs5Mapping.Add("908E2BC6-C110-4ED7-AF39-7EEACBB31A34", "7465D855-992E-4DC2-9855-A03250DFA74B") #/sitecore/system/Settings/Feature/Experience Accelerator/Bootstrap 4/Bootstrap 4 Grid Definition/Extra small/Size/8 -> /sitecore/system/Settings/Feature/Experience Accelerator/Bootstrap 5/Bootstrap 5 Grid Definition/Extra small/Size/8 $bs4ToBs5Mapping.Add("D65D90FB-45BF-4A04-A1EA-6F348E7CCBEA", "F2A11D85-8B09-40AC-B5D8-A9E1025F899D") $parentPath = "master:/sitecore/content/<tenantName>/<siteName>/Home" $childItems = Get-ChildItem -Path $parentPath -Recurse $childItems | ForEach-Object { ProcessItem $_ } Write-LogExtended "[I] Found $($bs4Items.Count) Items that reference BS4" #END Main
Merci pour la lecture!
Source link