Fermer

avril 17, 2021

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:
  • 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:
      • «avant» ou «b»
        • Exemple:
      • "à la place" ou "i"
        • Exemple:

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 ci-dessous comme exemple d'insertion d'un processeur personnalisé de plusieurs manières car il a tant de processeurs. Je l'ai modifié un peu pour pouvoir donner plus d'exemples.


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

 Covid 19

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 ne se soient exécutés



   
      
         
      
   

Insérez le processeur pour qu'il s'exécute après que tous les autres processeurs de se soient exécutés



   
      
         
      
   

Insérez le processeur à exécuter après les 2 premiers processeurs de ont exécuté



   
      
         
      
   

Insérez le processeur à exécuter avant que la méthode GetImageFieldValue dans ait exécuté



   
      
         
      
   

Remplacez le processeur GetMemoFieldValue par notre processeur personnalisé en



   
      
         
      
   

La ​​chose intéressante à propos du pipeline est qu'il a 2 processeurs qui utilisent la méthode GetLinkFieldValue (Sitecore et Buckets) mais disons que nous en créons un troisième et que nous voulons qu'il soit le deuxième de la liste, alors nous pourrions faire quelque chose comme ça ci-dessous



   
      
         
      
   

À propos de l'auteur [19659030] CJ b est devenu développeur Sitecore certifié en 2015. Dans ses temps libres, il aime jouer aux jeux vidéo, au basket-ball et au racquetball.

Plus de cet auteur






Source link