Fermer

mai 25, 2020

Sitecore Powershell 6: Utilisation des références d'élément


Nous avons vu des scénarios dans lesquels nous voulons connaître les références d'articles. Par exemple, supposons que nous voulons obtenir une liste des éléments auxquels SideContent Rendering est affecté à leur présentation. C'est le type exact d'informations que nous allons extraire en utilisant les différentes commandes détaillées dans ce post.

Une chose à noter est que ces commandes utiliseront la base de données de liens, donc votre base de données de liens devrait être à jour .

Remarque: Si vous n'avez pas mis à jour votre base de données de liens, je vous recommande de la mettre à jour avant d'effectuer les opérations ci-dessous à l'aide de Sitecore Powershell.

Get-ItemReferrer

Cette commande est utilisée pour obtenir tous les éléments qui se référer à l'élément spécifié dans la commande. Supposons donc que nous voulons obtenir la liste des éléments qui font référence à notre rendu SideContent . Voici le script qui peut accomplir cela en utilisant Get-ItemReferrer :

 Get-ItemReferrer -ID "{13AAD693-D140-4054-840D-4F9DABF681D3}" | Format-Table -Property Name, Id 

Ici, nous utilisons l'ID de notre rendu à utiliser dans la commande Get-ItemReferrer .

Sortie du script ci-dessus:

 Spereference1

Vous pouvez voir que la liste contient toutes sortes d'éléments qui font référence à notre élément de rendu.

Nous pouvons utiliser Where-Object pour filtrer nos jeu de résultats basé sur TemplateName . Nous voulons uniquement connaître les noms des éléments créés à partir du modèle Détails de l'événement qui font référence à notre élément.

 Get-ItemReferrer -ID "{13AAD693-D140-4054-840D-4F9DABF681D3}" | Where-Object {$ _. TemplateName -eq "Event Details"} 

Sortie de la commande ci-dessus:

 Spereference2

Get- ItemReference

Cette commande renvoie une liste d'éléments auxquels l'élément spécifié fait référence. En d'autres termes, cette commande récupérera une liste d'éléments référencés par l'élément spécifié.

Vérifions quels éléments sont liés à Page d'accueil élément:

 Get-ItemReference -ID "{ D45691EA-32A0-44D3-B56C-7B70A0CFA65E} "| Format-Table -Property Name, Id, TemplateName 

Sortie de ce qui précède:

 Spereference3

Utilisation de -ItemLink avec Get-ItemReference

L'utilisation de -ItemLink force la commande Get-ItemReference à renvoyer une liste de liens plutôt que d'éléments où vous pouvez trouver plus d'informations sur l'association entre votre élément cible et l'élément source .

 Get-ItemReference -ID "{D45691EA-32A0-44D3-B56C-7B70A0CFA65E}" -ItemLink 

Sortie après avoir exécuté la commande ci-dessus:

 Sitecore - Comprendre les approches de développement: A Sitecore Outlook

 Spereference4

Comme vous pouvez le voir, les informations récupérées après l'ajout – ItemLink contiennent des informations sur le lien entre la cible et la source. Ici, vous pouvez trouver l'ID du champ source et l'ID de l'élément cible qui sont affectés à ce champ.

Formater un peu la sortie en utilisant Select-Object pour sortir uniquement l'ID de champ source et l'ID d'élément cible :

 Get-ItemReference - ID "{D45691EA-32A0-44D3-B56C-7B70A0CFA65E}" -ItemLink | Select-Object -Property SourceFieldID, TargetItemID 

Sortie de ce qui précède:

 Spereference5

Update-ItemReferrer

Supposons que nous avoir un scénario dans lequel nous voulons mettre à jour toutes les références du champ d'image DecorationBanner de EventBanner image média à NewEventBanner image média.

 $ bannerImage = Get-Item -Path "maître:" -ID "{ECDF3D59-73C1-41A3-9F87-ACD56900765F}"

$ newImage = Get-Item -Path "master:" -ID "{1CBD0EE7-0CD5-4A8B-8626-EDB0F0599A5F}"

$ bannerImage | Update-ItemReferrer -NewTarget $ newImage 

Dans le script ci-dessus, nous prenons l'élément d'image de bannière actuel et le nouvel élément d'image de bannière dans des variables distinctes. Ensuite, nous exécutons la commande Update-ItemReferrer avec $ bannerImage en entrée et -NewTarget spécifié avec $ newImage.

Mais, nous avons un problème ici. Il s'agit d'une opération globale car aucun filtrage n'est effectué ici. Que faire si vous souhaitez uniquement les mettre à jour dans les éléments créés à partir du modèle Détails de l'événement ? Cela nous obligera à écrire un script personnalisé qui fournira une entrée filtrée à la commande Update-ItemReferrer . Nous n'inclurons que les enfants et petits-enfants des éléments de la page d'accueil créés à partir du modèle Détails de l'événement . Ensuite, nous utiliserons – ItemLink et Where-Object (?) Pour obtenir les informations de lien des seuls champs qui font référence à l'élément média $ bannerImage. Ensuite, nous le transmettrons à la commande Update-ItemReferrer en entrée.

Voici le script que nous utiliserons pour filtrer selon nos besoins:

 $ bannerImage = Get-Item -Path "master:" -ID "{ECDF3D59-73C1-41A3-9F87-ACD56900765F}"

$ newImage = Get-Item -Path "master:" -ID "{1CBD0EE7-0CD5-4A8B-8626-EDB0F0599A5F}"

$ EventDetailItems = Get-ChildItem -Path "master:" -ID "{D45691EA-32A0-44D3-B56C-7B70A0CFA65E}" -Recurse | Where-Object {$ _. TemplateName -eq "Détails de l'événement"}

$ EventDetailItems | Get-ItemReference -ItemLink | Where-Object {$ _. TargetItemID -eq $ bannerImage.ID}


Sortie de ce qui précède:

 Spereference6

Comme vous pouvez le voir, nous n'avons que 4 lignes dans notre résultat car nous n'avons que 4 éléments créés à partir du modèle Détails de l'événement sous la page d'accueil . En outre, vous pouvez voir que le tableau affiche des informations sur le lien car nous avons utilisé – ItemLink. Vous remarquerez également que le TargetItemID est le même. Cela est dû au fait que nous avons filtré le résultat en fonction de l'ID de notre élément de média EventBanner .

Maintenant, comme nous en avons terminé avec notre filtrage, ajoutons Update-ItemReferrer à notre script et passez notre liste filtrée en entrée.

Le script serait alors:

 #Get reference to current a target image item

$ bannerImage = Get-Item -Path "master:" -ID "{ECDF3D59-73C1-41A3-9F87-ACD56900765F}"
$ newImage = Get-Item -Path "master:" -ID "{1CBD0EE7-0CD5-4A8B-8626-EDB0F0599A5F}"


# Filtrez notre résultat en fonction du nœud parent et du TemplateName
$ EventDetailItems = Get-ChildItem -Path "master:" -ID "{D45691EA-32A0-44D3-B56C-7B70A0CFA65E}" -Recurse | Where-Object {$ _. TemplateName -eq "Détails de l'événement"}

$ LinkList = $ EventDetailItems | Get-ItemReference -ItemLink | ? {$ _. TargetItemID -eq $ bannerImage.ID}




Commande #Execute Update-Referrer sur un jeu de résultats filtré
$ LinkList | Update-ItemReferrer -NewTarget $ newImage 

J'ai exécuté le script ci-dessus. Il n'y aurait pas de sortie car il met à jour les liens, donc pour vérifier si notre champ a été mis à jour, j'ai exécuté ce script:

 Get-ChildItem -Path "master:" -ID "{D45691EA-32A0-44D3-B56C-7B70A0CFA65E } "-Recurse | Where-Object {$ _. TemplateName -eq "Détails de l'événement"} | Pour chaque{
$ _._. DecorationBanner.MediaID

} 

Sortie de ci-dessus:

 Spereference7

Comme vous pouvez le voir sur l'image ci-dessus, notre champ DecorationBanner a été mis à jour avec $

Nous avons vu comment utiliser Get-ItemReferrer, Get-ItemReference et Update-ItemReferrer dans cet article. Ce sont des commandes très utiles lorsque nous voulons extraire et manipuler des informations sur les références d'élément.

Le prochain article portera sur la façon dont nous pouvons utiliser les commandes Sitecore Powershell pour créer des rapports et les exporter.

À propos de l'auteur

Ramakant Chandel travaille en tant que professionnel Sitecore. Il aime explorer de nouveaux concepts techniques stimulants dans Sitecore. Il est passionné de partager ses connaissances avec tout le monde.

Pour en savoir plus sur cet auteur






Source link