当前位置 : 主页 > 网络推广 > seo >

在Dreamweaver TBB中检索链接组件的值 – 并使其成为SiteEditable

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在使用SDL Tridion 2011 SP1中的Dreamweaver TBB. 我不知道在Dreamweaver TBB中处理组件链接. 考虑我的组件名称是“A”,它具有到另一个组件“B”的链接. 组件A源看起来像这样: Content xmlns="So
我正在使用SDL Tridion 2011 SP1中的Dreamweaver TBB.

我不知道在Dreamweaver TBB中处理组件链接.

考虑我的组件名称是“A”,它具有到另一个组件“B”的链接.

组件A源看起来像这样:

<Content xmlns="Some UUID">
    <Name xlink:type="simple" xlink:href="tcm:184-1897" 
          xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title="B"></Name>
</Content>

组件B来源是:

<Content xmlns="Some other UUID">
    <first>first field</first>
    <second>second field</second>
</Content>

我想编写一个DWT TBB,它可以从组件A访问链接组件B中的字段.

我想使用RenderComponentField再现方法.

我是否需要添加任何扩展名,我是否可以在其上应用SiteEdit.

请分享您的观点.

谢谢.

本主题中有两个单独的问题:

>如何从DWT中的链接组件访问字段?
>如何在SiteEdit 2009中编辑链接组件中的字段?

这是问题1的答案.我将为问题2提供单独的答案.

在Tridion对DWT模板中表达式的默认处理中,您只能访问包中的组件字段.因此,如果要访问组件B的字段,则必须编写一个C#TBB,将该组件推送到Package中.

一个示例C#片段:

var componentA = (Component) engine.GetObject(package.GetValue("Component.ID"));
var fieldsA = new ItemFields(componentA.Content, componentA.Schema);
var linkField = (ComponentLinkField) fieldsA["Name"];
var componentB = linkField.Value;
var itemB = package.CreateTridionItem(ContentType.Component, componentB);
package.PushItem("ComponentB", itemB);

如果你将它放在C#片段TBB中并在DWT之前将其放入CT中,你可以在DWT中执行此操作:

@@ComponentB.Fields.first@@

或者,您可以使用Nuno的Dreamweaver Get eXtension (DGX)来访问这些字段而无需编写TBB:

@@Get("Fields.Name.first")@@"/>

使用DGX的唯一缺点是您需要在每个Tridion服务器上安装它.之后,DWT中提供了一堆扩展功能.

网友评论