Comment gérer des liens imbriqués

Le contenu extrait par Web Content Integrator peut contenir des liens imbriqués associés à des images, des fichiers et d'autres contenus présents dans le flux. Vous pouvez utiliser la balise de lien dans le flux pour représenter les liens imbriqués de manière qu'ils soient convertis en liens vers d'autres objets créés par Web Content Manager pendant le traitement du flux.

Les liens imbriqués pouvant être traités sont de trois types : image, fichier et contenu. Dans tous les cas, la balise de lien doit inclure un GUID désignant un autre élément présent dans le flux pour décrire l'objet cible.

Liens de contenu

Dans cet exemple, le flux contient un lien vers une autre page Web :
<p>
<a href="https://hclpnpsupport.hcltech.com/csm?id=kb_category&kb_category=c0ef98b71bb0778083cb86e9cd4bcbf2">Press Release</a>
</p> 

Pour vous assurer que le lien imbriqué sera converti en un lien vers un objet de contenu associé pendant le traitement du flux, vous devez ajouter le code suivant dans le flux. Ce code contient le GUID du fichier HTML qui est également traité par Web Content Integrator :

<![CDATA[<p> 
<a href='<link type="content" guid="80000002"/>'>Press Release</a>
This is some text.
</p>]]>

Quand le contenu du flux est enregistré dans Web Content Manager, un lien vers un objet de contenu est ajouté à ce contenu.

<p>
<a href="wps/wcm/myconnect/Portal/Press/Announcement1?contentIDR=29e04295034efb">Press Release</a>
This is some text.
</p>

Exemple de flux

<?xml version="1.0"?>
<rss version="2.0" xmlns:ibmwcm="http://purl.org/net/ibmfeedsvc/wcm/1.0" >
<channel>
<title>Sample Feed</title>
<link>http://www.ibm.com/feeds/sample.rss</link>
<description>An example RSS Feed</description>
<lastBuildDate>Tue, 31 Oct 2006 10:31:00 EST</lastBuildDate>
<item>
<title>News Item Two</title>
<link>http://www.ibm.com/news/two.htm</link>
<description>
This is a summary of the second news article
</description>
<pubDate>Tue, 31 Oct 2006 10:31:00 EST</pubDate>
<guid>80000001</guid>
<ibmwcm:action>add</ibmwcm:action>
<ibmwcm:itemType>content</ibmwcm:itemType>
<ibmwcm:authoringTemplate>News</ibmwcm:authoringTemplate>
<ibmwcm:path>/Portal/News</ibmwcm:path>
<ibmwcm:workflow name="Std Workflow">
<ibmwcm:workflowStage>Live</ibmwcm:workflowStage>
</ibmwcm:workflow>
<ibmwcm:component name="BODY">
<ibmwcm:type>rich text</ibmwcm:type>
<ibmwcm:value>
<![CDATA[<p>
<a href='<link type="content" guid="80000002" />'>some content link</a>
This is some text.
</p>]]>
</ibmwcm:value>
</ibmwcm:component>
</item>
<item>
<title>Announcment1</title>
<link>http://cmsserver.ibm.com/news/one.htm</link>
<description>This is an announcment press release.</description>
<pubDate>Tue, 31 Oct 2006 10:11:00 EST</pubDate>
<guid>80000002</guid>
<ibmwcm:action>add</ibmwcm:action>
<ibmwcm:itemType>Content</ibmwcm:itemType>
<ibmwcm:authoringTemplate>Press Release</ibmwcm:authoringTemplate>
<ibmwcm:path>/Portal/Press</ibmwcm:path>
<ibmwcm:workflow name="Std Workflow">
<ibmwcm:workflowStage>Live</ibmwcm:workflowStage>
</ibmwcm:workflow>
<ibmwcm:component name="BODY">
<ibmwcm:type>rich text</ibmwcm:type>
<ibmwcm:value>This is some more text.</ibmwcm:value>
</ibmwcm:component>
</item>
</channel>
</rss>

Liens de fichier

Dans cet exemple, le flux contient un lien vers un fichier au format PDF :

<p>
<a href="https://hclpnpsupport.hcltech.com/csm?id=kb_category&kb_category=c0ef98b71bb0778083cb86e9cd4bcbf2">Product Spec</a>
This is some text.
</p>

Pour vous assurer que le lien imbriqué est converti en un lien vers un composant de ressource de fichier associé pendant le traitement du flux, ajoutez le code suivant au flux. Ce code contient le GUID du fichier PDF qui est également traité par Web Content Integrator :

<![CDATA[<p>
<a href='<link type="file" guid="50000002"/>'>Product Spec</a>
This is some text.
</p>]]>

Quand le contenu du flux est enregistré dans Web Content Manager, une balise de composant est ajoutée à ce contenu.

<p>
<a href="<Component name="ProductSpec" />">Product Spec</a>
This is some text.
</p>

Exemple de flux

<?xml version="1.0"?>
<rss version="2.0" xmlns:ibmwcm="http://purl.org/net/ibmfeedsvc/wcm/1.0" >
   <channel>
      <title>Sample Feed</title>
      <link>http://www.ibm.com/feeds/sample.rss</link>
      <description>An example RSS Feed</description>
      <lastBuildDate>Tue, 31 Oct 2006 10:31:00 EST</lastBuildDate>

      <item>
         <title>News Item Two</title>
         <link>http://www.ibm.com/news/two.htm</link>
         <description>
            This is a summary of the second news article
         </description>
         <pubDate> Tue, 31 Oct 2006 10:31:00 EST</pubDate>
         <guid>80000001</guid>
         <ibmwcm:action>add</ibmwcm:action>
         <ibmwcm:itemType>Content</ibmwcm:itemType>
         <ibmwcm:authoringTemplate>News</ibmwcm:authoringTemplate>
         <ibmwcm:path>/Portal/News</ibmwcm:path>
         <ibmwcm:workflow name="Std Workflow">
            <ibmwcm:workflowStage>Live</ibmwcm:workflowStage>
         </ibmwcm:workflow>
         <ibmwcm:component name="BODY">
            <ibmwcm:type>rich text</ibmwcm:type>
            <ibmwcm:value>
<![CDATA[<p>
<a href="<link type="file" guid="50000002" />">some file link</a>
This is some text.
</p>]]>
            </ibmwcm:value>
         </ibmwcm:component>
      </item>

      <item>
         <title>Product Spec</title>
         <link>http://cmsserver.ibm.com/files/spec.pdf</link>
         <description>This is the product spec document.</description>
         <pubDate> Tue, 31 Oct 2006 10:11:00 EST</pubDate>
         <guid>50000002</guid><ibmwcm:action>add</ibmwcm:action>
         <ibmwcm:itemType>component</ibmwcm:itemType>
         <ibmwcm:component name="File">
            <ibmwcm:type>file</ibmwcm:type>
            <ibmwcm:value>
              http://cmsserver.ibm.com/files/spec.pdf
            </ibmwcm:value>
         </ibmwcm:component>
      </item>
   </channel>
</rss>

Liens d'image

Dans cet exemple, le flux contient un lien vers un fichier d'image :

<p>
<img src="http://cmsserver.ibm.com/images/mylogo.gif" />
This is some text.
</p>

Pour vous assurer que le lien imbriqué est converti en un lien vers un composant image associé pendant le traitement du flux, ajoutez le code suivant au flux. Ce code contient le GUID du fichier image qui est également traité par Web Content Integrator :

<![CDATA[<p>
<link type="image" guid="50000001" />
This is some text.
</p>]]>

When the content of the feed is saved within Web Content Manager, a component tag is added to the content.

<p>
<Component name="My Logo" />
This is some text.
</p>

Exemple de flux

<?xml version="1.0"?>
<rss version="2.0" xmlns:ibmwcm="http://purl.org/net/ibmfeedsvc/wcm/1.0" >
   <channel>
      <title>Sample Feed</title>
      <link>http://www.ibm.com/feeds/sample.rss</link>
      <description>An example RSS Feed</description>
      <lastBuildDate>Tue, 31 Oct 2006 10:31:00 EST</lastBuildDate>

      <item>
         <title>News Item Two</title>
         <link>http://www.ibm.com/news/two.htm</link>
         <description>
            This is a summary of the second news article
         </description>
         <pubDate> Tue, 31 Oct 2006 10:31:00 EST</pubDate>
         <guid>80000001</guid>
         <ibmwcm:action>add</ibmwcm:action>
         <ibmwcm:itemType>Content</ibmwcm:itemType>
         <ibmwcm:authoringTemplate>News</ibmwcm:authoringTemplate>
         <ibmwcm:path>/Portal/News</ibmwcm:path>
         <ibmwcm:workflow name="Std Workflow">
            <ibmwcm:workflowStage>Live</ibmwcm:workflowStage>
         </ibmwcm:workflow>
         <ibmwcm:component name="BODY">
            <ibmwcm:type>rich text</ibmwcm:type>
            <ibmwcm:value>
<![CDATA[<p>
<link type="image" guid="50000001" />
This is some text.
</p>]]>
            </ibmwcm:value>
         </ibmwcm:component>
      </item>

      <item>
         <title>My Logo</title>
         <link>http://cmsserver.ibm.com/images/mylogo.gif</link>
         <description>This is our logo image.</description>
         <pubDate> Tue, 31 Oct 2006 10:21:00 EST</pubDate>
         <guid>50000001</guid><ibmwcm:action>add</ibmwcm:action>
         <ibmwcm:itemType>component</ibmwcm:itemType>
         <ibmwcm:component name="Image">
            <ibmwcm:type>image</ibmwcm:type>
            <ibmwcm:value>
              http://cmsserver.ibm.com/images/mylogo.gif
            </ibmwcm:value>
         </ibmwcm:component>
      </item>
   </channel>
</rss>

Traitement automatique des balises d'image

Web Content Integrator possède une fonction en option qui peut être utilisée à la place de la balise <link type="image" />. Si cette fonction est activée, Web Content Integrator effectue automatiquement une analyse syntaxique des valeurs de tout élément html ou de texte enrichi et recherche les balises HTML <img/> imbriquées dans le contenu. S'il détecte des balises, Web Content Integrator essaie de récupérer le fichier image référencé, crée un composant image puis écrit à nouveau la référence afin qu'elle désigne le nouveau composant image.

Cette fonction peut être activée en éditant le paramètre disable.img.proc du fichier WCMConsumerPlugin.properties et en le définissant sur "false". Le traitement automatique des images est désactivé par défaut.

Si vous l'activez, le traitement s'opère comme suit :
  • Seul les contenus importés dans des composants ou éléments HTML ou texte enrichi sont traités,
  • Toutes les références d'image correspondant au modèle "<img src= ..." sont traitées. Les références d'image incluses dans des codes JavaScript ou des styles CSS ne sont pas traitées.
  • Les URL spécifiées dans les attributs "src" de ces balises d'image sont remplacées par des URL qualifiées complètes à l'aide d'autres informations sur l'objet de contenu présent dans le flux. Les liens relatifs doivent être définis par rapport à l'URL contenue dans l'élément <link> du flux qui respecte les règles standard applicables aux liens relatifs.
  • Les fichiers image sont stockés en tant que composants d'image partagés. Les contrôles d'accès au composant image sont définis comme celui de l'objet de contenu, ce qui le référence. Le nom du composant image est basé sur le chemin relatif du fichier image par rapport au serveur. Par exemple, une image qui se trouve à l'adresse http://<host_name>/resources/images/sm_logo.gif sera nommée resources.images.sm_logo.gif..
  • Les adresses URL spécifiées dans les attributs "src" des balises d'image ne doivent pas contenir de chaîne de requête car tous les éléments qui suivent un point d'interrogation sont ignorés lorsque le composant d'image est créé.

    Par exemple, <img src="http://<host_name>/program/path?param1=hello&param2=a.jpg"....> et <img src="http://<host_name>/program/path?param1=world&param2=b.jpg" ...> créent ou mettent à jour le même composant d'image nommé "program.path".