2012-06-13 7 views
9

複合テンプレート内で文字列アイテムを使用してDreamweaverテンプレートのように実行できるかどうかは誰にも分かりませんか?それと同じ方法を他のメディエーター(かみそりのようなもの)に適用するかどうか?パッケージ内のアイテムをDreamweaverテンプレートとして実行する

おかげ マーク

+0

パッケージクラスには、調べる価値があるかもしれない 'package.EvaluateExpression(文字列式)'メソッドがあります。 –

答えて

5

EngineTemplate sはTridionの項目に基づいてされることを想定しているので、私は、それがPackage内だけで任意の項目を行うことはできません怖いです。

テンプレートアイテムがTridionアイテムに基づいての場合は、おそらくEngine.GetMediatorメソッドからかなり離れている可能性があります。そうでない場合は、有効なTemplateオブジェクトに変換する方法を見つける必要があります。

Template template = ... 
IMediator mediator = engine.GetMediator(template); 
mediator.Transform(engine, template, package); 

私はパッケージにTridionのベースの項目からComponentオブジェクトを作成する必要がある場合、私は、通常、このような何か:

Component component = new Component(item.GetAsXmlDocument().DocumentElement, 
            engine.GetSession); 

を私が試したが、それを期待していませんTemplateについても同じことをすることができます - まず、テンプレートを表すパッケージから有効なItemで始まることを前提にします。おそらく、既存のItemからXMLをクローンしたり、他の方法でそれを偽造することができます。

これを動作させると、登録されているすべてのテンプレートタイプで機能します。 Engineは、Tridionに付随する種類の特別な治療法を提供していません。

+1

フランクのポインタに感謝します。それを調べます。 Yours –

+0

今日、「engine.GetMediator」は公開されていないことがわかりました。私はTBBに 'DreamweaverMediator'をインスタンス化し、あらかじめ構築された' TemplateBuildingBlock'オブジェクトを渡すだけでした。より多くの人が役に立つと思えば、上記のコードを更新します。 –

5

これは可能ではないと思われます。

Package.EvaluateExpressionが有用かもしれないが、名前が示唆するように、それが唯一の表現ではなく、組み込み式(すなわち、TEL)とコードの大断片にうまくいく

Engine.GetMediatorTemplateを期待し、それに対して適切なMediatorを返します。あなたの問題は、インターフェイスで、Template、およびPackageが必要なTransformメソッドしか定義されていないことです。

私はこれらの周りにエレガントな方法を考えることはできません。自分のメディエーターを書くかもしれませんが、それはまだ文字列ではなく、パッケージを期待するでしょうから、最初に別のTBBから文字列ベースのItemを格納しなければなりません。

私のアドバイス:あなたが描画ボードに戻って、あなたの問題の代替ソリューションを見つける必要があるように思えます。

+1

Markは、既存のITemplateまたはMediatorの中から「DWTとしての文字列」を呼び出すことを想定していました。これは、パッケージ内の項目であることを示しているからです。そうであれば、既存のEngineオブジェクトとPackageオブジェクトを単にMediator.Transformメソッドに渡すことができます。私が見ることができる主な問題は、その文字列ItemをTemplateインスタンスに変換することです。しかしそれは良い点なので、私は精巧に答えを更新します。 –

+1

私は新しいComponentTemplateまたはPageTemplateオブジェクトを作成し、テンプレートの有効なXML表現を渡すことは可能だと思います。それでもあなたはどこにでもいらないでしょう - 私はあなたの文字列アイテムから新しいTBBを作成し、それを新しいテンプレートのXMLに追加します。 TBBが救われる必要があると私は期待しています。 –

関連する問題