gpt4 book ai didi

dreamweaver - 在Dreamweaver TBB中检索链接组件的值-并使它成为SiteEditable

转载 作者:行者123 更新时间:2023-12-03 13:52:19 25 4
gpt4 key购买 nike

我正在使用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将该组件插入程序包。

    示例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中将提供大量扩展功能。

    关于dreamweaver - 在Dreamweaver TBB中检索链接组件的值-并使它成为SiteEditable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10256744/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com