9

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

ありがとうマーク

4

2 に答える 2

5

残念ながら、 はTridion アイテムに基づいていることを期待しているPackageため、内のすべてのアイテムでそれが可能になるわけではありません。EngineTemplate

テンプレート アイテムTridion アイテムに基づいている場合は、メソッドから開始することで、おそらくかなりのことを達成できますEngine.GetMediatorTemplateそうでない場合は、有効なオブジェクトに変換する方法を見つける必要があります。

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 に付属するタイプに対して特別な処理を提供しません。

于 2012-06-13T14:21:04.260 に答える
5

これは不可能だと思います。

Package.EvaluateExpression便利かもしれませんが、名前が示すように、式でのみ機能し、式が埋め込まれた大きなコードのスニペット (つまり、TEL) では機能しません。

Engine.GetMediatorは a を期待し、それTemplateに適した を返しますMediator。あなたの問題は、インターフェースIMediatorTransformメソッドのみを定義していることです。EngineTemplatePackage

これらを回避するエレガントな方法は考えられません。独自のメディエーターを作成することもできますが、それでも文字列ではなくパッケージが必要になるため、最初に別の TBB から文字列ベースのアイテムを格納する必要があります。

私のアドバイス: 設計図に戻って、問題に対する別の解決策を見つける必要があるようです。

于 2012-06-13T19:42:36.767 に答える