Fermer

mars 12, 2024

Récupération et modification des informations de rendu pour les éléments versionnés avec PowerShell / Blogs / Perficient

Récupération et modification des informations de rendu pour les éléments versionnés avec PowerShell / Blogs / Perficient


En travaillant sur un projet, j’ai rencontré un scénario dans lequel je devais lister tous les éléments avec des rendus particuliers ainsi que les versions des éléments de page.

J’ai également dû mettre à jour le rendu dans les détails de présentation pour toutes les versions. Il s’agissait d’une mise à jour groupée. J’ai décidé d’écrire un script PowerShell pour cette tâche. Dans un premier temps, nous verrons comment obtenir une liste de tous les éléments (toutes les versions) qui ont ce rendu.

Cependant, plusieurs commandes permettant de récupérer et de modifier les détails de la présentation sont associées au rendu.

Reportez-vous à ce lien pour plus d’informations : Rendus d’articles – Extensions Sitecore PowerShell.

Les images ci-dessous montrent de nombreuses versions de l’élément avec des attributs de rendu spécifiques issus des détails de présentation.

Ici, j’ai créé plusieurs éléments avec plusieurs versions sous le chemin « /sitecore/content/Test Pages » et ajouté le rendu « pied de page » via les détails de la présentation. Je vérifierai les propriétés particulières du contrôle de rendu pour le modifier, comme Data Source, PlaceHolder, etc.

Capture11

Capture12

Capturer13

Le script PowerShell récupère tous les éléments versionnés à partir d’un chemin donné. Ensuite, à l’aide de la clé d’espace réservé « Footer » et de la mise en page « FinalLayout », il essaie de répertorier les informations de rendu d’accès « footer » pour chaque élément versionné.

D’un autre côté, il peut exister un scénario dans lequel différents rendus sont appliqués à la même clé d’espace réservé.
En conséquence, il peut être filtré à l’intérieur de la boucle ou à l’aide d’un prédicat lors de l’appel de Get-Rendering.

Code :

$childitems = Get-ChildItem -Path "/sitecore/content/Test Pages" -Recurse
$reportItems = @()
$childitems | ForEach-Object {
$currentChildItem = $_
#fetch all versioned items.
$items = Get-Item -Path  master: -ID $currentChildItem.Id  -Version *
$items | ForEach-Object {
    $currentItem = $_
    $defaultLayout = Get-LayoutDevice "Default"  
 
<#Specify placeholder to fetch from it#>
   
 Get-Rendering -Item $currentItem -Device $defaultLayout -Placeholder "*footer*"  -FinalLayout | 
    ForEach {   
            $renderingItem = Get-Item -Path  master: -ID $_.ItemID   
            <#IF $renderingItem.Name -eq "Footer" condition is applied in case multiple rendering appplied on same Footer placeholder#> 
             $Obj = @{
                        "Rendering Name" =  $renderingItem.Name
                        "Data Source" = $_.DataSource
                        "Page Path" = $currentItem.FullPath
                        "Page Id" = $currentItem.Id
                        "Version" = $currentItem.Version
                        }
                        $reportItems += New-Object psobject -Property $Obj
                }
    }
}
$reportItems | Format-table

Image5

Voyons maintenant comment nous pouvons modifier les éléments versionnés répertoriés ci-dessus. Ce script PowerShell modifie la source de données et l’espace réservé pour le rendu de chaque élément versionné.

Code :

$childitems = Get-ChildItem -Path "/sitecore/content/Test Pages " -Recurse
$childitems | ForEach-Object {
$currentChildItem = $_
$items = Get-Item -Path  master: -ID $currentChildItem.Id -Version *
$items | ForEach-Object {
    $currentItem = $_
    $defaultLayout = Get-LayoutDevice "Default"
Get-Rendering -Item $currentItem -Device $defaultLayout -Placeholder "*footer*"  -FinalLayout | 
    ForEach {
            $renderingItem = Get-Item -Path  master: -ID $_.ItemID

               <# updating Datasource information#>
                $_.Datasource = "/sitecore/content/Data/-- "
              
                <#updating placeholder information#>
                 $_.Placeholder = "footerNew"

                <#Other rendering parameters can also be updated#>

                Set-Rendering -Item $currentItem -Instance $_ -FinalLayout
               }
}
}

Le résultat montre que la source de données des rendus « Pied de page » a été mise à jour pour plusieurs éléments versionnés. Cela peut être vérifié de manière aléatoire en entrant dans les détails de la présentation.

Image6






Source link