gpt4 book ai didi

tridion - SDL 三重奏 2011 : Dynamically fill or add a metadata field using a C# TBB

转载 作者:行者123 更新时间:2023-12-04 10:54:20 27 4
gpt4 key购买 nike

是否可以从 TBB 动态设置元数据字段的值?或者是否可以从 TBB 动态添加不一定存在于模式上的元数据字段?

我想这样做的原因是我正在使用 DD4T,并且我希望将面包屑自动添加到 DD4T xml 中。

我尝试了以下方法:

    public override void Transform(Engine engine, Package package)
{
Initialize(engine,package);

var page = GetPage();

string output = page.OrganizationalItem.Title;

var parent = page.OrganizationalItem as StructureGroup;
while (parent != null)
{
output = GetLinkToStructureGroupIndexPage(parent) + Separator + output;
parent = parent.OrganizationalItem as StructureGroup;
}

// I tried this to dynamically add the field
//var metadata = page.Metadata.OwnerDocument.CreateElement("breadcrumb");
//metadata.InnerText = output;
//page.Metadata.AppendChild(metadata);

//I tried this to dynamically set an existing field on the schema
foreach (XmlNode xml in page.Metadata)
{
Log.Debug("Metadata field:" +xml.Name);
if(xml.Name == "breadcrumb")
{
xml.InnerText = output;
}
}

package.PushItem(Package.PageName, package.CreateTridionItem(ContentType.Page, page));
}

但是,这些方法似乎都不起作用。这是不可能的吗?

最佳答案

DD4T 具有实用程序类 FieldsBuilderAddFields您可以在其中注入(inject)其他元数据的方法。 DD4T 有一个 TBB,它确实从文件夹元数据更新组件元数据,它被称为 InheritMetadataComponent .

你可以在这里看看这个,你可以实现相同的:

http://code.google.com/p/dynamic-delivery-4-tridion/source/browse/trunk/dotnet/DD4T.Templates/InheritMetadataComponent.cs
FieldsBuilder.AddFields(component.MetadataFields, tcmFields, 1, false, mergeAction, Manager);

关于tridion - SDL 三重奏 2011 : Dynamically fill or add a metadata field using a C# TBB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199288/

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