Trucs et astuces pour patcher les processeurs Sitecore

L'une des questions que j'entends de la part des développeurs Sitecore qui viennent de créer un processeur est la suivante: comment positionner mon processeur pour qu'il s'exécute avant ou après un processeur existant dans un pipeline? Si vous placez le processeur au mauvais endroit, le processeur qui s'exécute avant votre processeur aurait pu interrompre le pipeline avant que votre code n'ait une chance de faire quoi que ce soit. Le processeur pourrait également avoir changé les valeurs de l'argument du pipeline en quelque chose dont votre code a besoin pour s'exécuter correctement.
Il s'agit de patcher un processeur dans un pipeline, mais cette même logique pourrait également s'appliquer à la correction d'autres éléments dans Sitecore tels que les gestionnaires, Sites, stratégies, etc. Veuillez noter que cela vous aidera à insérer le processeur dans un pipeline dans un certain ordre, mais votre processeur pourrait ne pas être dans l'ordre souhaité si un autre fichier de configuration est lu après le vôtre par Sitecore.
Comment Sitecore patche-t-il un processeur
Pour comprendre comment patcher des processeurs, nous devons d'abord comprendre ce que Sitecore fait dans les coulisses. Examinons quelques méthodes sous Sitecore.Update.dll.
- Sitecore.Update.Xml.Patch.ConfigFilePatchHelper.IsPatchingAttributeName
- Sitecore vérifie que l'attribut « patch: » existe pour votre processeur pour déterminer si vous souhaitez placer le processeur dans un certain endroit. Remarquez dans l'exemple donné que le mot-clé patch se produit avant de décider comment vous souhaitez insérer le processeur dans le pipeline.
- Exemple:
- Exemple:
- Sitecore vérifie que l'attribut « patch: » existe pour votre processeur pour déterminer si vous souhaitez placer le processeur dans un certain endroit. Remarquez dans l'exemple donné que le mot-clé patch se produit avant de décider comment vous souhaitez insérer le processeur dans le pipeline.
- Sitecore.Update.Xml.Patch.ConfigFilePatchHelper.DetermineInsertOperation
- Sitecore recherche 3 mots-clés différents (6 si vous incluez les alias) pour déterminer où insérer le processeur
- «après» ou «a»
- Exemple:
- Exemple:
- «avant» ou «b»
- Exemple:
- Exemple:
- "à la place" ou "i"
- Exemple:
- Exemple:
- «après» ou «a»
- Sitecore recherche 3 mots-clés différents (6 si vous incluez les alias) pour déterminer où insérer le processeur
Tous les éléments de «patch: before», «patch: after» ou «patch: instead» tels que «* [last()]» utilisent XPATH pour faire le reste du travail . Je recommande de consulter cette page si vous voulez plus de façons d'utiliser XPATH.
Exemples d'opérations d'insertion
Je vais utiliser le pipeline
L'exemple ci-dessous sera utilisé pour montrer comment insérer un processeur dans le pipeline
Exemples
Insérer le processeur à exécuter avant que tous les autres processeurs de
Insérez le processeur pour qu'il s'exécute après que tous les autres processeurs de
Insérez le processeur à exécuter après les 2 premiers processeurs de
Insérez le processeur à exécuter avant que la méthode GetImageFieldValue dans
Remplacez le processeur GetMemoFieldValue par notre processeur personnalisé en
La chose intéressante à propos du pipeline
Source link