2010-10-12 12 views
1

Certains éléments de composant dans tridion sont configurés pour un schéma particulier. J'aimerais pouvoir modifier le schéma de ces éléments dans un schéma plus récent. Le nouveau schéma conserve toutes les propriétés existantes de l'ancien, donc il n'y aurait pas de perte de données. Dans cette situation, il n'est pas possible de simplement modifier le schéma existant.Comment puis-je modifier le schéma d'un composant tridion existant?

Est-ce que quelqu'un sait si c'est possible?

Répondre

-1

J'ai été capable de le faire en écrivant quelques requêtes pour remplacer les noms de schéma et les références directement dans la base de données tridion. Cela a fonctionné correctement, mais je le recommanderais seulement si le schéma de départ est EXACTEMENT comme le schéma final. Sinon, cela va casser les composants.

+2

J'ai annulé cette opération, car la modification de la base de données est inutile et nuira à votre position de support. Certainement mauvaise pratique. Ne fais pas ça. –

0

Il n'est pas possible de modifier le schéma d'un composant Tridion via l'interface Content Manager. Cependant, ceci peut être réalisé en utilisant une 'page personnalisée' car l'API permet de changer le schéma d'un composant par le code.

Tiré de la documentation SDL Tridion 2009 (Templating Manuel de mise en œuvre (TOM.NET) 2009):

  • Classe: Tridion.ContentManager.ContentManagement.Component
  • propriété: publique schéma de schéma {get; ensemble; }
  • Description: Récupère ou définit le schéma pour le contenu et les métadonnées du composant.

Il existe un élément (y compris un exemple de code) sur les forums de développeurs Tridion (TOPIC_ID = 2899) à ce sujet. Cependant, comme il s'agit d'un forum fermé, je ne suis pas sûr de la légalité de reproduire le code ici.

1

Il y a une raison pour laquelle l'interface graphique Tridion ne vous permet pas de modifier le schéma sur un composant: il est très probable que votre composant perdra son contenu après un tel changement, même si les deux schémas ont des champs communs . Pour éviter cela, assurez-vous que les schémas ont le même espace de noms cible. Dans ce cas, si un champ est défini dans les deux schémas, le composant conservera ses valeurs même après la modification du schéma.

1

Le contenu Tridion Porter vous permet d'exporter du contenu et des schémas d'un CMS à un autre. Il peut également être utilisé pour déplacer les articles entre publications. C'est une option pour "dupliquer" un schéma et son contenu pour une réutilisation (ainsi que pour sauvegarder n'importe quel travail avant de changer les données en direct!).

Veillez à ne pas modifier l'espace de nom ou les champs XML que vous souhaitez conserver (les descriptions et le nom du schéma sont acceptables). Pour être sûr, en particulier avec des données en direct, faire une exportation propre juste au cas où avant d'utiliser l'une de ces réponses.

2

Vous pouvez modifier le schéma d'un composant en affectant simplement une nouvelle valeur à la propriété Schema du composant et en l'enregistrant. Bien sûr, l'enregistrement du composant nécessite que le composant soit validé par rapport au nouveau schéma.

Le cas le plus trivial est lorsque vous venez de copier-coller le schéma et que les deux schémas sont identiques. En pratique, vous avez généralement une raison de changer le schéma, auquel cas vous voudrez probablement utiliser GetXml() et UpdateXml() sur le composant et avoir un XSLT transformer le XML en quelque chose compatible avec le nouveau schéma. Dans ce scénario, vous pouvez simplement mettre à jour la référence de schéma dans votre XSLT.Comme le dit Jonathon, vous pouvez utiliser une page personnalisée pour cela, mais gardez à l'esprit qu'il s'agit généralement d'une action unique qui doit être conçue/exécutée par les programmeurs et les administrateurs, donc si vous utilisez une page personnalisée, probablement vouloir l'enlever après.