Mar*_*per 9 tridion tridion2009 tridion-2011
有人知道复合模板中是否可以使用包中的字符串项并像执行Dreamweaver模板一样执行它?你是否将相同的方法应用于其他调解员(如剃刀)?
谢谢马克
我担心这对于任何项目都是不可能的Package,因为Engine预期Templates基于Tridion项目.
如果您的模板项目是基于一个外表套上项目,你可能可以开始在得到很远Engine.GetMediator的方法.如果不是,你必须找到一些方法将它变成一个有效的Template对象.
Template template = ...
IMediator mediator = engine.GetMediator(template);
mediator.Transform(engine, template, package);
Run Code Online (Sandbox Code Playgroud)
当我必须Component从包中的基于Tridion的项创建对象时,我通常会这样做:
Component component = new Component(item.GetAsXmlDocument().DocumentElement,
engine.GetSession);
Run Code Online (Sandbox Code Playgroud)
我没有尝试过,但是期望你可以做同样的事情Template- 假设你从代表模板开始的包中的有效项开始.您可以从现有项中克隆XML,或者找到其他方法来伪造它.
如果您能够使用它,它将适用于所有已注册的模板类型.对EngineTridion附带的类型没有特殊处理.
我怀疑这是不可能的.
Package.EvaluateExpression 可能有用,但顾名思义它只适用于表达式,而不是带有嵌入式表达式的大型代码片段(即TEL)
Engine.GetMediator期望a Template并返回适合Mediator它的.那么你的问题是IMediator接口只定义了Transform方法,它需要a Engine,a Template和a Package.
我想不出围绕这些的优雅方式.也许编写自己的Mediator,但仍然需要一个Package,而不是字符串,所以你必须先从另一个TBB存储基于字符串的Item.
我的建议:听起来你需要回到绘图板并找到解决问题的替代方案.
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |