2010-10-12 2 views
1

У меня есть некоторые элементы элементов в tridion, которые настроены для конкретной схемы. Я хотел бы иметь возможность изменить схему для этих элементов на новую схему. Новая схема сохраняет все существующие свойства, которые были у старого, поэтому потеря данных не будет. В этой ситуации невозможно просто изменить существующую схему.Как изменить схему существующего компонента tridion

Кто-нибудь знает, можно ли это сделать?

ответ

-1

Я смог сделать это, написав несколько запросов, чтобы заменить имена и ссылки схемы непосредственно в базе данных tridion. Он работал нормально, но я бы рекомендовал это только в том случае, если исходная схема ТОЧНО, как схема конца. В противном случае он сломает компоненты.

+2

Я голосовал это вниз, потому что редактирование базы данных не требуется, и повредит вашу позицию поддержки. Определенно плохая практика. Не делай этого. –

0

Невозможно изменить схему компонента Tridion через интерфейс Content Manager. Однако это может быть достигнуто с помощью «Пользовательской страницы», поскольку API позволяет изменять схему компонента с помощью кода.

Взятые из 2009 (Руководства по внедрению Шаблонирования (TOM.NET) 2009) в SDL Tridion документации:

  • Класс: Tridion.ContentManager.ContentManagement.Component
  • собственность: государственная схема схема {получить; задавать; }
  • Описание: Получить или установить схему для содержимого и метаданных компонента.

Об этом можно узнать на форумах разработчиков Trimion (TOPIC_ID = 2899). Однако, поскольку это закрытый форум, я не уверен в законности воспроизведения кода здесь.

1

Существует причина, по которой графический интерфейс Tridion не позволяет вам изменять схему на компоненте: очень вероятно, что ваш компонент потеряет свой контент после такого изменения, даже если две схемы имеют общие поля , Чтобы избежать этого, убедитесь, что схемы имеют одно и то же пространство имен. В этом случае, если поле определено в обеих схемах, компонент сохранит свои значения даже после изменения схемы.

1

Trigio Content Porter позволяет экспортировать содержимое и схемы из одной CMS в другую. Его также можно использовать для перемещения предметов между публикациями. Это один из вариантов «дублировать» схему и ее содержимое для повторного использования (а также для резервного копирования любой работы перед изменением живых данных!).

Будьте осторожны, чтобы не изменить пространство имен или любые поля XML, которые вы хотите сохранить (описания и имя схемы в порядке). Конечно, особенно с живыми данными, сделайте чистый экспорт на всякий случай, прежде чем использовать любой из этих ответов.

2

Вы можете изменить схему компонента, просто присвоив новое значение свойству Schema компонента и сохраните его. Конечно, для сохранения компонента потребуется, чтобы компонент проверял новую схему.

Тривиальный случай для этого - когда вы только что скопировали схему, и поэтому обе схемы идентичны. На практике у вас, как правило, есть причина для изменения схемы, и в этом случае вы, вероятно, захотите использовать GetXml() и UpdateXml() в компоненте, и XSLT преобразует XML в нечто совместимое с новой схемой. В этом случае вы можете просто обновить ссылку схемы в своем XSLT.

Как Джонатан говорит, вы можете использовать пользовательскую страницу для этого, но имейте в виду, что обычно это одноразовое действие, которое должно быть спроектировано/выполнено программистами и администраторами, поэтому, если вы используете пользовательскую страницу, вы вероятно, захочет удалить его впоследствии.