Ajouter un script PowerShell au menu contextuel dans Sitecore SXA
Ce blog décrit comment faire n’importe quel Le script PowerShell apparaît dans le menu contextuel d’un élément dans Sitecore SXA. Par conséquent, ces options de menu ne devraient être disponibles que lorsque cela est nécessaire. Nous verrons également les champs ShowRule et EnableRule dans les éléments de script PowerShell pour masquer/afficher et activer/désactiver en fonction de certaines règles fondamentales de Sitecore.
Menu contextuel – Lorsque nous faisons un clic droit sur n’importe quel élément Sitecore, un menu avec plusieurs options telles que Insérer, rechercher, dupliquer, etc. apparaît. Ce menu est connu sous le nom de menu contextuel de l’élément.
Script PowerShell dans le menu contextuel – Dans Sitecore, nous pouvons ajouter des scripts PowerShell à la zone des scripts du menu contextuel de l’élément. L’ajout de scripts Powershell au menu contextuel a pour but de permettre d’exécuter le script à partir de n’importe quel élément. En conséquence, il devient plus convivial pour l’auteur.
Scripts PowerShell interactifs – Nous pouvons créer un script PowerShell interactif à l’aide de l’extension Sitecore PowerShell. Cela améliore l’expérience de l’interface utilisateur d’un auteur en affichant des boîtes de dialogue avec des résultats, des sorties ou des boîtes de dialogue pour en tirer des entrées.
Ajoutons le script PowerShell au menu contextuel dans Sitecore SXA
Commençons par un scénario commercial simple : supposons que nous ayons une liste de « codes postaux » dans un fichier CSV.
- Nous devrions être en mesure d’exécuter l’importation de fichiers sur un dossier de données spécifique uniquement.
- Nous voulons que tous les éléments de codes postaux soient automatiquement créés dans le dossier cible. (Hypothèse : nous avons le modèle pour l’élément de code postal)
Ainsi, dans cette section, nous allons écrire un script PowerShell interactif. Cela invitera l’utilisateur à télécharger un fichier CSV via un dialogue interactif. Nous allons ajouter la main au menu contextuel. Cette option de script doit être disponible uniquement pour le dossier de code postal et masquée pour tout autre élément Sitecore.
Étape 1 : Créer un module de script PowerShell.
Lorsque nous créons un script Powershell, nous devons l’enregistrer quelque part. Sitecore PowerShell conserve tous les scripts PowerShell dans la bibliothèque de scripts (PowerShell Script Library).
La bibliothèque de scripts se trouve dans « Sitecore>Système>Modules>PowerShell>Bibliothèque de scripts.” Il organise le script sous des modules pour un accès plus facile.
- Sous le dossier ‘SPE’, nous allons créer un dossier avec un modèle de dossier de module pour notre projet.
- Création d’un nouveau dossier avec le nom de mon projet, « DailySitecore ».
Maintenant, cliquez avec le bouton droit sur le dossier du projet et sélectionnez Insérer. Plusieurs options d’insertion sont disponibles ici. Comme le montre l’image ci-dessous, nous sélectionnerons « Assistant de modules” pour créer un nouveau module dans notre dossier de projet.
Pour commencer le processus de création d’un nouveau module de script PowerShell. Lorsque vous cliquez sur l’assistant de module, une boîte de dialogue apparaîtra, demandant une entrée. Comme nous n’avons besoin de ce module que pour le menu contextuel, je n’ai fourni que les entrées dont j’ai besoin.
- Donnez au module un nom significatif.
- Cochez la case « Activer le module »
- Choisissez « Editeur de contenu – Menu contextuel » dans la liste
- Procéder
Un dossier de module sera créé lorsque vous cliquerez sur le bouton « Continuer ». Le dossier du module contiendra les dossiers « Content Tree » et « Context Menu ».
Maintenant que votre module de script PowerShell a été créé avec succès. Vous pouvez conserver le script PowerShell dans le Menu contextuel dossier.
Noter: Tous les scripts placés dans ce dossier seront désormais visibles dans les sections Scripts du menu contextuel pour tous les éléments Sitecore.
Étape 2 : Créer un script PowerShell interactif pour l’importation CSV.
Suite à la création du module, nous allons écrire un script PowerShell interactif à l’aide de PowerShell ISE. Ici, nous pouvons nous référer à la documentation pour savoir comment créer des dialogues interactifs en utilisant Sitecore PowerShell.
Accédez au Launchpad et lancez PowerShell ISE, puis écrivez le script ci-dessous.
# Upload CSV file #It will create the folder if it is not found $dataFolder = [Sitecore.Configuration.Settings]::DataFolder $tempFolder = $dataFolder + "/tempupload" $filePath = Receive-File -Path $tempFolder -overwrite -Description "Please Upload a CSV file" -Title "Data Import" if($filePath -eq "cancel"){exit} $importRows = Import-CSV $filePath $index = 1; $totalRows = $importRows.Count; $PercentComplete = 0; New-UsingBlock (New-Object Sitecore.Data.BulkUpdateContext){ #Data Folder Location $item = Get-Item . $zipCodeFolderPath = $item.Paths.FullPath #Template Location $zipCodeTemplatePath = "/sitecore/templates/Project/DailySitecore/Zip Code" #Field Name $zipcodeItemField = "ZipCode" #Check If All Path are Valid Function Show-PathNotFound-Message($Path){ Show-Alert -Title "'$Path' doesn't exist!" Write-Host "'$Path' doesn't exist!" -ForegroundColor Red; exit } if (-Not (Test-Path $zipCodeFolderPath)) { Show-PathNotFound-Message($zipCodeFolderPath); } #Get all entries from CSV foreach ($row in $importRows) { Write-Progress -Activity "Processing records ($index / $totalRows)" -Status "$PercentComplete% Complete:" -PercentComplete $PercentComplete $zipCode = $row.Zipcode Function Show-ErrorMessage($msg){ Show-Alert -Title "$msg" Write-Host $msg -ForegroundColor Red; exit } if($zipCode -eq $null){ Show-ErrorMessage("CSV should contains header row as Zipcode"); } #Adding ZipCode if Not present $zipCodeItemPath = $zipCodeFolderPath+"/"+$zipCode if(Test-Path -Path $zipCodeItemPath){ Write-Host "$zipCode is already Exits" -ForegroundColor Yellow; } else{ $item = New-Item -Path $zipCodeFolderPath -Name $zipCode -ItemType $zipCodeTemplatePath $item.Editing.BeginEdit() $item[$zipcodeItemField] = $zipCode $item.Editing.EndEdit() $newZipId = $item.ID; Write-Host "$index Item created for: $zipCode"; } $index++; $PercentComplete = [int] (($index / $totalRows) * 100) } }
Une fois que vous avez terminé, cliquez sur le bouton Enregistrer et accédez au dossier Menu contextuel de votre module. Entrez un nom pour le script et appuyez sur le bouton Sélectionner.
Toutes nos félicitations! Votre script est maintenant terminé et apparaît dans le menu contextuel. Faites un clic droit sur n’importe quel élément pour confirmer que vous pouvez maintenant voir le script dans le menu, comme indiqué dans l’image ci-dessous.
Mais attendez, le script s’affichera lorsque vous cliquerez avec le bouton droit sur n’importe quel élément de l’arborescence Sitecore. Cependant, dans ce cas, nous n’avons besoin que de ce script pour apparaître dans le dossier de données de code postal (un élément créé à partir d’un modèle spécifique). Pour ce faire, nous devrons ajouter quelques règles au script, que nous verrons à l’étape suivante.
Étape 3 : Configuration des règles pour le script (Show-Rule & Enable-Rule)
Chaque élément de script Powershell a deux champs : ShowRule et EnableRule. La règle d’affichage et la règle d’activation sont utilisées pour contrôler la visibilité du script dans le menu contextuel de n’importe quel élément.
Afficher la règle : Ce champ affiche l’option de script uniquement lorsque le scénario correspond à la condition donnée.
EnableRule : Ce champ active ou désactive l’option de script uniquement lorsque le scénario correspond à la condition donnée. Le script sera toujours visible mais désactivé si la condition ne correspond pas.
Suivez les étapes décrites ci-dessous.
- Choisissez l’élément de script.
- Accédez à la section interactive, puis au champ « ShowRule » / « EnableRule »
- Modifier les règles> Ajouter la règle nécessaire (comme indiqué ci-dessous)
Seuls les éléments créés à partir du modèle « Dossier des codes postaux » afficheront ce script. L’option de script ne sera pas disponible dans le menu contextuel pour les autres éléments Sitecore.
Noter: Si vous ne pouvez pas voir les champs, cela peut être dû à des problèmes de sécurité ; dans ce cas, cliquez sur « Elevate Session » en haut. Il vous demandera des informations d’identification avant d’afficher tous les champs.
Étape 4 : modifier l’apparence du script
Nous pouvons également modifier la façon dont l’option de script apparaît. Donner aux auteurs une apparence plus descriptive. La modification de l’apparence est similaire à la modification de l’apparence d’autres éléments Sitecore.
Nous allons changer le script icône et je veux qu’il apparaisse dans la première seconde en ordre dans le menu contextuel.
- Dans notre cas, sélectionnez l’élément de script « Importation du code postal » dans le module d’importation CSV de la bibliothèque de scripts.
- Accédez à l’onglet Affichage et activez l’affichage des champs standard.
- Modifiez l’Icône dans le champ Icône (sélectionnez l’icône pertinente concernant le fonctionnement du script).
- Modifier l’ordre de tri (pour spécifier un ordre d’apparition dans le menu).
Notre script est maintenant prêt à apparaître dans le menu contextuel de l’élément Dossier de code postal.
J’espère que vous avez trouvé cet article utile. Bon apprentissage!!
Source link