Fermer

février 9, 2024

Extension du service de mise en page dans Sitecore Headless / Blogs / Perficient

Extension du service de mise en page dans Sitecore Headless / Blogs / Perficient


Sitecore Headless utilise un service appelé Layout Service pour transmettre le contenu de Sitecore à l’application frontale dans une architecture sans tête. Il est responsable du rendu de la mise en page d’une page ou d’un composant et de la fourniture du contenu associé à l’application côté client.

Le service de mise en page construit et fournit une représentation JSON englobant le contexte, l’itinéraire, les espaces réservés, les rendus (composants) et les sources de données. Cette charge utile JSON alimente le moteur de rendu, permettant le rendu de l’interface utilisateur finale. Bien que Sitecore Headless Services facilite l’exposition des points de terminaison pour récupérer les données d’itinéraire Sitecore au format JSON, il est essentiel d’établir et de configurer une clé API Sitecore Services Client (SSC) pour interagir avec ces points de terminaison. Cela garantit un moyen sécurisé et authentifié d’interroger les services sans tête Sitecore pour les données requises.

Pour plus de détails sur la façon de créer une clé API SSC, voir la section 1.4 de cette page. Une fois créé, n’oubliez pas de publier votre clé API si vous utilisez le point de terminaison API pour interroger la base de données Web. Référez-vous à ce document officiel pour plus de détails sur Sitecore sans tête.

https://[siteUrl]/sitecore/api/layout/render/jss?item=[item ID or sitecore path]&sc_apikey=[your api key]

Par exemple:

https://sitecoreheadlesssc.dev.local/sitecore/api/layout/render/jss?item=/&sc_apikey={6E17D1A4-9A07-4A54-B32A-22BEC5B94847}

Prêt à l’emploi, cela renvoie les objets Context et Route si nous voulons ajouter plus de champs dans JSON, il existe un moyen d’étendre cela, voyons comment nous pouvons faire cela

Note:

La sortie du service de mise en page manque de sécurité inhérente et est susceptible d’être inspectée côté client. Traitez-la comme une API ouverte, limitez les données à l’essentiel pour le front-end et évitez d’exposer les détails sensibles. Pour plus de détails, consultez le document officiel Extension du service de mise en page.

Service de mise en page

Le service de mise en page renvoie quelque chose comme ceci :

Données Json

Sitecore dispose d’une configuration de pipeline de services de mise en page prédéfinie pour GetLayoutServiceContext:

Showconfig du service de mise en page

Il était évident qu’il serait simple d’ajouter un autre processeur de pipeline qui ajouterait les données au contexte. En utilisant Gestionnaire de liens pour obtenir le lien de l’élément de contexte et le concaténer avec HOSTNAME, l’application du correctif au processeur dans le pipeline du service de mise en page nécessitait un minimum de code :

using Sitecore;
using Sitecore.Diagnostics;
using Sitecore.LayoutService.ItemRendering.Pipelines.GetLayoutServiceContext;
using Sitecore.Links;
using System;
using System.Collections.Generic;
using System.Web;

namespace Feature.Customization.PipelineProcessors
{
    public class ItemUrlContext : IGetLayoutServiceContextProcessor
    {
        public const string Key = "itemUrl";
        public void Process(GetLayoutServiceContextArgs args)
        {
            if (Context.Item !=  null)
            {
                Assert.ArgumentNotNull((object)args, nameof(args));
                IDictionary<string, object> contextData = args.ContextData;
                string link = LinkManager.GetItemUrl(Context.Item);

                var HostName = !String.IsNullOrWhiteSpace(Context.Site.TargetHostName) ? Context.Site.TargetHostName : HttpContext.Current.Request.Url.Host;

                var itemUrl = HostName + link;
                contextData.Add(Key, itemUrl);
            }
        }
    }
}

Correctif du pipeline du service de mise en page

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <pipelines>
      <group groupName="layoutService">
        <pipelines>
          <getLayoutServiceContext>
            <processor type="Feature.Customization.PipelineProcessors.ItemUrlContext, Feature.Customization" />
          </getLayoutServiceContext>
        </pipelines>
      </group>
    </pipelines>
  </sitecore>
</configuration>

Cela a abouti à la sortie JSON attendue avec une propriété « itemUrl » contenant l’URL de l’élément de contexte.

Configuration du service de mise en page

Service de mise en page mis à jour

La personnalisation est cruciale pour bénéficier d’une flexibilité inégalée dans l’extension du service de mise en page sans tête Sitecore. Du réglage fin de la sortie JSON à l’intégration de métadonnées personnalisées, ce voyage renforce votre architecture sans tête.

Un merci spécial à mes formidables collègues – Shivam Jain et Ashish Chinchkhede, pour avoir jumelé et partagé ces connaissances.

Restez à l’écoute pour plus d’informations et consultez notre blog Sitecore pour plus.






Source link