簡體   English   中英

將包中的項目作為Dreamweaver模板執行

[英]Executing an item in the package as a Dreamweaver Template

有人知道復合模板中是否可以使用包中的字符串項並像執行Dreamweaver模板一樣執行它? 你是否將相同的方法應用於其他調解員(如剃刀)?

謝謝馬克

我擔心在Package任何項目都不可能,因為Engine期望Template s基於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需要一個Template並為其返回適當的Mediator 那么你的問題是IMediator接口只定義了Transform方法,它需要一個Engine ,一個Template和一個Package

我想不出圍繞這些的優雅方式。 也許編寫自己的Mediator,但仍然需要一個Package,而不是字符串,所以你必須先從另一個TBB存儲基於字符串的Item。

我的建議:聽起來你需要回到繪圖板並找到解決問題的替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM