Доступ к полям компонентов из пользовательского развертывателя
Я пытаюсь создать собственный развертыватель в Tridion 2011 SP1, который может индексировать компонент в экземпляр solr после опубликования. Все работает нормально, но я столкнулся с проблемой, связанной с тем, как он индексирует поля компонентов.
Я могу получить доступ к полям метаданных в порядке, используя метод Component.getCustomMeta() и анализируя XML. Однако доступ к нормальным полям кажется невозможным без чтения в файле, который выводится и анализирует вывод. Это не совсем возможно, так как разметка может измениться, и, похоже, это долгий путь, делая то, что должно (надеюсь) быть простым.
У меня был трал через документы, и, похоже, нет ничего доступного, чтобы получить значения полей, так что я здесь в убытке и вам нужно будет разобрать вывод или я что-то не хватает где-то?
Ответы
Ответ 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 на странице и т.д.).
Надеемся, что эта информация поможет.