Подтвердить что ты не робот

Доступ к полям компонентов из пользовательского развертывателя

Я пытаюсь создать собственный развертыватель в Tridion 2011 SP1, который может индексировать компонент в экземпляр solr после опубликования. Все работает нормально, но я столкнулся с проблемой, связанной с тем, как он индексирует поля компонентов.

Я могу получить доступ к полям метаданных в порядке, используя метод Component.getCustomMeta() и анализируя XML. Однако доступ к нормальным полям кажется невозможным без чтения в файле, который выводится и анализирует вывод. Это не совсем возможно, так как разметка может измениться, и, похоже, это долгий путь, делая то, что должно (надеюсь) быть простым.

У меня был трал через документы, и, похоже, нет ничего доступного, чтобы получить значения полей, так что я здесь в убытке и вам нужно будет разобрать вывод или я что-то не хватает где-то?

4b9b3361

Ответ 1

Поля содержимого не отображаются как таковые на стороне доставки, содержимое отображается как, что не удивительно, "контент".

Если вам действительно нужны поля, вам необходимо:

  • Произвести "синтаксический" вывод для ваших презентаций компонентов.
  • Разбирайте презентации компонентов по мере их публикации.

Посмотрите на такие реализации, как DD4T для подобных подходов.

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

Ответ 2

Мы выполнили альтернативное обходное решение для достижения аналогичного требования. Одной из сторон с реализацией является дополнительный рендеринг презентаций компонентов в XML и дублирование хранилища xml в брокере.

Вот что мы сделали:

  • Создал динамический CT (XML-представление контента) GetComponentAsXML и сопоставлен ко всем схемам
  • Все шаблоны страниц имеют С# TBB, который просматривает содержимое, которое нужно нажать для SOLR
  • С# TBB делает RenderComponentPresentation с помощью выше Dynamic CT GetComponentAsXML, это подталкивает XML (engine.RenderComponentPresentation(component.Id, componentTemplateURI)
  • Теперь Deployer получает содержимое в формате xml, в дополнение к другим типам презентаций компонентов (например, ascx, emebedded на странице и т.д.).

Надеемся, что эта информация поможет.