2012-05-09 3 views
17

Tridion 2011 SP1で、一度発行されたソルアーインスタンスにコンポーネントをインデックスできるカスタムデプロイヤーを作成しようとしています。すべてうまくいっていますが、コンポーネントフィールドをインデックス化する方法に少し問題があります。カスタムデプロイヤーからコンポーネントのフィールドにアクセス

私は、Component.getCustomMeta()メソッドを使用してXMLを解析することで、大丈夫なメタデータフィールドにアクセスできます。しかし、通常のフィールドへのアクセスは、出力されているファイルを読み込んで出力を解析することができないと思われません。マークアップが変更される可能性があるので、これは完全に実現可能ではありません。

私はドキュメントを使ってトロールをしていますが、フィールド値を取得するために利用できるものはないようですので、ここでは紛失していますので、出力を解析する必要がありますか、

答えて

12

コンテンツのフィールドは配信側では公開されていないため、コンテンツは「コンテンツ」として公開されています。あなたが本当にフィールドが必要な場合は

は、次のものが必要に:

  1. がコンポーネントのプレゼンテーションのための「解析可能」出力を生成し
  2. 、彼らが発表され得るよう構成要素のプレゼンテーションを解析します。

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

TridionはOut of the Boxを公開していないため、簡単にはできません。これを行う唯一の方法は、テンプレートを使用してコンテンツの出力形式を変更することです。

4

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

は、私たちがやっていることです:

  1. は、すべてのページテンプレートはC#TBBを持っているダイナミックCT(コンテンツのXML表現)GetComponentAsXMLを作成し、すべてのスキーマ
  2. にマッピングされているコンテンツを検索しています我々はengine.RenderComponentPresentation(component.Id、componentTemplateURI)
  3. Deployerのは今Aで、xml形式でコンテンツを取得します(これはXMLをプッシュし、
  4. C#TBBは、ダイナミックCT GetComponentAsXML上記でRenderComponentPresentationを行い SOLR
  5. にプッシュする必要があります他のタイプのコンポーネントプレゼンテーション(ascxのような、ページ上に埋め込まれています。)

この情報が役立つことを願っています。

+0

これは合理的な方法のように見えます。私は現在、ページの公開/非公開のためのイベントハンドラと動的CPをバインドするイベントシステムを検討しています。それは大丈夫だと思われるが、それが失敗するなら、あなたが描いたもののようなものを調べるだろう – ajwhitehead88

関連する問題