Fermer

juin 19, 2023

Optimizely CMS – Obtenir tout le contenu d’une propriété spécifique avec un simple script SQL / Blogs / Perficient

Optimizely CMS – Obtenir tout le contenu d’une propriété spécifique avec un simple script SQL / Blogs / Perficient


Lorsque vous devez récupérer tout le contenu d’une propriété spécifique à partir d’un type de page/bloc, vous utiliserez normalement IContentLoader ou IContentRepository, ou même IContentModelUsage pour obtenir toutes les instances d’un type de contenu, puis sélectionnez-les par propriété. Il s’agit de l’implémentation correcte par code.

Mais que se passe-t-il si vous avez seulement besoin de vérifier la valeur de la propriété à des fins de débogage/développement ? Ou générer un rapport rapide sur l’utilisation d’une propriété ? Ensuite, vous devez encapsuler l’implémentation ci-dessus dans une API ou un outil personnalisé, puis créer, déployer, etc. Cela semble excessif pour une exigence à usage unique, n’est-ce pas ? Cet article vous guidera pour passer par un simple script SQL.

Scénario

Dans cet article, nous essaierons d’obtenir toutes les métadescriptions des pages standard dans le modèle Alloy :

Alliage

Avant de commencer

Afin d’exécuter le script, nous devons connaître l’ID de clé primaire de la page standard et de la propriété MetaDescription.

Pour la page standard, nous pouvons facilement repérer sa clé primaire en allant dans la section Admin -> Types de contenu -> StandardPage, elle s’affiche dans l’URL. Pour mon environnement local, la clé primaire est 20

Standardpagepkid

Pour la propriété MetaDescription, nous devons interroger la table tblPropertyDefinition, pour obtenir toutes les définitions de propriété de StandardPage.

select * from tblPropertyDefinition 
where fkContentTypeID = 20 -- standard page's pkId

Comme vous pouvez le voir, l’ID de clé primaire de la propriété MetaDescription est 138 sur ma machine locale.

ID de propriété de requête

Le script

Maintenant que nous avons tous les identifiants nécessaires, c’est au tour du script :

select c.pkID as PageID,
    wc.Name as PageName,
    wcp.LongString as MetaDescription
from tblContent c
     inner join tblWorkContent wc on c.pkID = wc.fkContentID
     inner join tblWorkContentProperty wcp on wcp.fkWorkContentID = wc.pkID
where c.fkContentTypeID = 20 -- standard page type ID
     and wc.Status = 4 -- last publish version
     and wcp.fkPropertyDefinitionID = 138 -- metadescription property ID

Explication

Pour obtenir les données dont nous avons besoin, nous devons faire une jointure interne entre 3 tables différentes : tblContent, tblWorkContent et tblWorkContentProperty.

  • tblContent: C’est l’une des tables les plus importantes d’Optimizely Content Cloud. Chaque ligne contient toutes les informations cruciales d’un contenu. Il comprend l’ID (pkId) du contenu et cette table est considérée comme une racine pour se connecter aux autres tables du système. Dans cet exemple, nous utiliserons la condition où tblContent.fkContentTypeID = 20 pour obtenir uniquement le contenu de type Page standard.
  • tblWorkContent : Ce tableau contient toutes les versions de contenu dans le CMS. Lorsque vous enregistrez/publiez une page ou un bloc, un nouvel enregistrement sera inséré dans le tblWorkContent. Ou lorsque vous parcourez le module complémentaire Versions en mode Édition, vous voyez en fait les données de ce tableau. Pour ce script, nous utilisons la condition où tblWorkContent.Status = 4 pour récupérer uniquement la dernière version publiée d’un contenu.
  • tblWorkContentProperty : Cette table contient également des données de versions. Mais contrairement à tblWorkContent, celui-ci stocke les données de chaque propriété. Lorsqu’une page/un bloc est publié, il peut y avoir une ou plusieurs propriétés modifiées dans une version, donc ce tableau gardera une trace de toutes les propriétés modifiées pour une version spécifique. Dans le cadre de ce scénario, utilisera la condition où tblWorkContentProperty.fkPropertyDefinitionID = 138 pour prendre uniquement la propriété MetaDescription.

Le résultat

Résultat de la requête

C’est ça! Maintenant que vous avez le sortilège en main, n’hésitez pas à découvrir votre base de données quand vous en avez besoin. Bon codage !






Source link