複合テンプレートでパッケージ内の文字列アイテムを使用して、dreamweaver テンプレートのように実行できるかどうかを知っている人はいますか? そして、同じ方法を他のメディエーター (かみそりなど) に適用しますか?
ありがとうマーク
複合テンプレートでパッケージ内の文字列アイテムを使用して、dreamweaver テンプレートのように実行できるかどうかを知っている人はいますか? そして、同じ方法を他のメディエーター (かみそりなど) に適用しますか?
ありがとうマーク
残念ながら、 はTridion アイテムに基づいていることを期待しているPackage
ため、内のすべてのアイテムでそれが可能になるわけではありません。Engine
Template
テンプレート アイテムが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
私は試していませんが、最初にテンプレートを表すパッケージから有効なアイテムから開始することを考えると、 - に対して同じことができると期待しています。おそらく、既存のアイテムから XML を複製するか、それを偽造する別の方法を見つけることができます。
これを機能させると、登録されているすべてのテンプレート タイプで機能します。はEngine
、Tridion に付属するタイプに対して特別な処理を提供しません。
これは不可能だと思います。
Package.EvaluateExpression
便利かもしれませんが、名前が示すように、式でのみ機能し、式が埋め込まれた大きなコードのスニペット (つまり、TEL) では機能しません。
Engine.GetMediator
は a を期待し、それTemplate
に適した を返しますMediator
。あなたの問題は、インターフェースIMediator
がTransform
メソッドのみを定義していることです。Engine
Template
Package
これらを回避するエレガントな方法は考えられません。独自のメディエーターを作成することもできますが、それでも文字列ではなくパッケージが必要になるため、最初に別の TBB から文字列ベースのアイテムを格納する必要があります。
私のアドバイス: 設計図に戻って、問題に対する別の解決策を見つける必要があるようです。