17

Tridion 2011 SP1で、公開されたコンポーネントをsolrインスタンスにインデックス付けできるカスタムデプロイヤーを作成しようとしています。すべてが正常に機能していますが、コンポーネントフィールドのインデックス作成方法に少し問題があります。

Component.getCustomMeta()メソッドを使用してXMLを解析することで、メタデータフィールドに問題なくアクセスできます。ただし、通常のフィールドにアクセスするには、出力されているファイルを読み込んで出力を解析する必要があります。マークアップが変更される可能性があるため、これは完全に実行可能ではありません。また、(願わくば)単純なことを実行するのは遠い道のりのようです。

ドキュメントを調べましたが、フィールド値を取得するために利用できるものがないようです。ここで途方に暮れていて、出力を解析する必要がありますか、それともどこかで何かが足りませんか?

4

2 に答える 2

12

コンテンツフィールドは配信側ではそのまま公開されません。当然のことながら、コンテンツは「コンテンツ」として公開されます。

本当にフィールドが必要な場合は、次のことを行う必要があります。

  1. コンポーネントプレゼンテーション用の「解析可能な」出力を生成します
  2. 公開されたら、コンポーネントのプレゼンテーションを解析します。

同様のアプローチについては、 DD4Tのような実装を見てください。

要するに、Tridionはそれを箱から出して公開しないので、それを行うことはできません。それを行う唯一の方法は、テンプレートを介してコンテンツの出力形式を変更することです。

于 2012-05-09T13:06:32.747 に答える
4

同様の要件を達成するために、別の回避策を実行しました。実装の1つの欠点は、XMLでのコンポーネントプレゼンテーションの追加レンダリングとブローカーでのxmlストレージの複製です。

これが私たちが行ったことです:

  1. 動的CT(コンテンツのXML表現)GetComponentAsXMLを作成し、すべてのスキーマにマップしました
  2. すべてのページテンプレートには、SOLRにプッシュする必要のあるコンテンツを検索するC#TBBがあります
  3. C#TBBは、上記の動的CT GetComponentAsXMLを使用してRenderComponentPresentationを実行します。これにより、XMLがプッシュされます(engine.RenderComponentPresentation(component.Id、componentTemplateURI)
  4. Deployerは、他のタイプのコンポーネントプレゼンテーション(ascx、ページに埋め込まれているなど)に加えて、コンテンツをxml形式で取得するようになりました。

この情報がお役に立てば幸いです。

于 2012-05-09T16:00:24.840 に答える