TBBからメタデータフィールドの値を動的に設定することは可能ですか?または、TBBのスキーマに必ずしも存在しないメタデータフィールドを動的に追加することは可能ですか?
これを実行したい理由は、DD4Tを使用していて、ブレッドクラムをDD4Txmlに自動的に追加したいからです。
私は以下を試しました:
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));
}
ただし、これらの方法はどちらも機能しないようです。これは不可能ですか?