Obtenir une balise de contenu pour récupérer du contenu géré en externe

Le contenu texte, comme les fragments HTML destinés à être utilisés dans les emplacements e-marketing, peut être récupéré à partir d'un système de gestion de contenu externe. Lorsque le contenu texte est récupéré à partir d'un système externe pour s'afficher sur une page de magasin, le contenu est récupéré pendant que la création du rendu de la page du magasin. La balise JSTL wcst:getContent est utilisée pour accepter et résoudre les URL de contenu afin qu'elles soient valides pour la page du magasin où le contenu sera affiché. La balise est ensuite utilisée pour récupérer le contenu de l'URL résolue.

La balise JSTL wcst:getContent est utilisée pour incorporer les résultats d'une URL spécifiée à l'emplacement du contenu dans un système de gestion de contenu externe. Le contenu récupéré doit être un contenu texte pouvant être incorporé dans une page de magasin. Si le contenu à récupérer contient des références URL relatives à l'emplacement du contenu, la balise wcst:getContent met à jour les références URL relatives pour qu'elles soient entièrement qualifiées. Une fois l'URL résolue, l'URL est accessible et le contenu texte trouvé dans l'URL entièrement qualifiée est inclus dans la page du magasin. Lorsque le contenu est récupéré à partir de l'emplacement de l'URL résolue, la balise est utilisée pour écrire le contenu sur une variable spécifiée ou vers le JSPWriter actuel si aucune variable n'est spécifiée.

Lorsque cette balise est incluse sur une page de magasin pour résoudre les URL de contenu à partir d'un système externe, les attributs suivants peuvent être définis pour la balise wcst:getContent.
  • url - l'URL du contenu en cours de récupération. L'URL non résolue peut être spécifiée avec cet attribut ou dans le corps de la balise wcst:getContent.
  • var - la variable à laquelle le contenu est attribué. Si cet attribut variable n'est pas spécifié, le contenu est écrit dans le JSPWriter actuel.
  • scope - la portée de la variable spécifiée avec l'attribut var. Les valeurs de l'attribut scope peuvent être page, request, session et application. La valeur par défaut est page.

Le contenu utilisé pour obtenir cette balise est récupéré à l'aide de l'instruction de tâches com.ibm.commerce.content.commands.GetContentCmd. Cette commande appelle l'URL spécifiée pour la balise et récupère le contenu. L'implémentation par défaut de l'instruction de tâche GetContentCmd est configurée dans la table de base de données STORECONF. Pour plus d'informations sur la configuration de l'implémentation par défaut de cette instruction de tâches, voir com.ibm.commerce.content.commands.GetContentCmdImpl.

Toutes les URL de contenu non résolues doivent avoir le préfixe http://[cmsHost]. Ces URL non résolues sont ensuite résolues avec l'instruction de tâche com.ibm.commerce.content.commands.ResolveContentURLCmd. Lorsque cette instruction est appelée, l'URL est appelée à partir du serveur d'applications WebSphere. L'implémentation par défaut de l'instruction de tâche remplace le préfixe http://[cmshost] par le nom hôte de la clé wc.resolveContentURL.cmsInternalHost qui se trouve dans la table de base de données STORECONF. Si la commande ne détecte pas le préfixe http://[cmsHost], l'URL est considérée comme résolue. Pour plus d'informations sur la configuration de l'implémentation par défaut de cette instruction de tâche, voir com.ibm.commerce.content.commands.ResolveContentURLCmdImpl.

Mise en cache de la balise getContent

La commande de la balise wcst:getContent peut être mise en cache. Pour activer la mise en cache de cette commande, ajoutez l'entrée cachespec suivante dans le cachespec.xml
<cache-entry>
  <class>command</class>
  <sharing-policy>not-shared</sharing-policy>
  <name>com.ibm.commerce.content.commands.GetContentCmdImpl</name>
  <cache-id>
    <component type="method" id="getCacheId">
      <required>true</required>
    </component>
    <priority>1</priority>
    <timeout>3600</timeout>
    <inactivity>600</inactivity>
  </cache-id>
  <dependency-id>getContent</dependency-id>
</cache-entry>
Avec la mise en cache activée, les pages de magasin peuvent incorporer le contenu à partir d'un système de gestion de contenu externe. Il se peut que le contenu incorporé doive être invalidé si le contenu source change. Pour invalider ce contenu mis en cache, des délais d'expiration peuvent être réglés pour l'invalidation du cache ou le cache peut être vidé au besoin. Si l'invalidation explicite du cache est nécessaire, effectuez la procédure suivante.
  1. Déterminez les URL de contenu qui sont modifiées. La comparaison des fichiers pré-rendus en amont avec les fichiers nouvellement pré-rendus peut aider à identifier les URL modifiées. Ignorer le contenu qui n'a pas de type MIME "text". Le contenu autre que le texte n'est pas mis en cache par et est chargé directement par le navigateur. Le contenu texte peut être mis en cache et consommé par les emplacements e-marketing sur une page de magasin lorsque ces derniers sont rendus.
  2. Déterminez les lignes de la table de base de données qui fait référence à l'une des URL modifiées. Les URL de contenu sont enregistrées dans la colonne ATCHASTPATH pour la table.
  3. Utilisez l'utilitaire stagingprop pour insérer des enregistrements dans la base de données de production afin d'invalider les emplacements e-marketing qui font référence au contenu modifié. Vous pouvez également mettre à jour la colonne TIMEUPDATED de la table ATCHAST en exécutant les requêtes SQL suivantes.
    update atchast set timeupdated = current timestamp where atchastpath in ('http://[cmsHost]/contentPath');
    http://[cmsHost]/contentPath est l'URL de contenu du contenu modifié.
    Remarque : Si vous devez insérer manuellement les enregistrements CACHEIVL dans la base de données de production, utilisez les requêtes SQDL suivantes.
    insert into cacheivl (dataid) values ('contentId:collateral_Id'); 
    
    
    collateral_Id est la valeur dans la colonne COLLATERAL_ID de la table de base de données . Pour identifier toutes les lignes de la table COLLATERAL qui sont liées au contenu modifié, vous devez référencer la table . Ce tableau enregistre la relation entre les entrées dans les tables COLLATERAL et ATCHAST. Pour récupérer une liste de valeurs COLLATERAL_ID qui font référence à un élément de contenu modifié, par exemple http://[cmsHost]/contentPath, utilisez les requêtes SQL suivantes.
    select object_id from atchrel 
    where atchobjtyp_id = 4 
    and atchtgt_id in (select atchtgt_id from atchast where atchastpath in ('http://[cmsHost]/contentPath'));