Génération d'une URL de page de détails de site à l'aide d'une API

Si vous affichez une liste d'éléments de contenu dans une présentation de contenu à partir de votre propre requête, vous pouvez créer un lien vers une page de détails pour un élément de contenu. Vous pouvez utiliser l'API SCSRenderAPI.getPageLinkData du kit SDK Sites pour générer une URL de page Détails du site.

La propriété detailPageId est l'ID de la page de détails sélectionnée dans l'élément de contenu ou la liste de contenu. Si la valeur n'a pas été définie, la valeur renvoyée est la première page de SiteStructureMap dont la propriété isDetailPage est définie.

Pour accéder à cette propriété, vous pouvez utiliser le kit SDK Sites. Cette option est disponible uniquement lorsque la présentation de contenu est utilisée pour un site Oracle Content Management. Vous pouvez y accéder uniquement via scsData, qui est transmis en tant qu'argument lors de la création de la présentation de contenu. Par exemple :

scsData.SitesSDK.getProperty('detailPageId', function (detailPageId) {   console.log(detailPageId);});

Une fois que vous disposez de detailPageId, vous pouvez vous en servir pour créer le lien vers la page de détails.

SCSRenderAPI dispose d'une fonction, getPageLinkData(), qui comprend un élément pageId et des options supplémentaires, et qui crée l'URL requise vers la page en transmettant les options. La signature de cette fonction est la suivante :

SCSRenderAPI.getPageLinkData(pageId,
      options);

Elle comprend les paramètres suivants :

  • pageId : identique à detailPageId renvoyé par la propriété detailPageId du kit SDK Sites.

  • options :

    • contentType

    • contentId

    • contentName

La valeur renvoyée est un objet avec ces propriétés :

  • hideInNavigation

  • href

  • href

L'exemple suivant rassemble le tout :

scsData.SitesSDK.getProperty('detailPageId', function (detailPageId) {
  var pageDetails = SCSRenderAPI.getPageLinkData(pageId,     {
        'contentType': contentType,
        'contentId': contentId,
        'contentName': contentItemData.slug || contentItemData.name
    });
 
 
   // get the URL to the page
   console.log(pageDetails.href);
});

Ce qui serait imprimé comme suit : "/sites/{site}/{detailPageName}/{contentType}/{contentId}/{contentSlug}"

Si pageId n'est pas une page de détails, les valeurs de contenu ne sont pas ajoutées à l'URL.

Reportez-vous à Kits SDK Oracle Content Management.