我正在 SDL Tridion 2011 SP1 中处理 .Net TBB。
我的组件源看起来像这样。
<Content>
<single>ABCD</single>
</Content>
我试过这样的事情。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tridion.ContentManager.Templating.Assembly;
using Tridion.ContentManager.Templating;
using Tridion.ContentManager.ContentManagement;
using Tridion.ContentManager.ContentManagement.Fields;
using System.IO;
using System.Collections;
using System.Xml;
using System.Xml.Linq;
namespace ClassLibrary1
{
public class SampleTemplate : ITemplate
{
/// <summary>
/// Transform as defined by ITemplate.
/// </summary>
/// <param name="engine">Templating engine</param>
/// <param name="package">Package to process</param>
public void Transform(Engine engine, Package package)
{
using (MemoryStream mem= new MemoryStream() )
{
Component component = engine.GetObject(package.GetValue("Component.ID")) as Component;
ItemFields content = new ItemFields(component.Content, component.Schema);
XhtmlField temp = (XhtmlField)content["single"];
int i=0;
XmlDocument xdoc = new XmlDocument();
XmlElement root = xdoc.CreateElement("body");
XElement xe = null;
foreach (string val in temp.Values)
{
string j=i.ToString();
XmlNode xnode = xdoc.CreateNode(XmlNodeType.Element, @"tcdl:ComponentField", "tcdlNamespace");
XmlAttribute name = xdoc.CreateAttribute("name");
XmlAttribute index = xdoc.CreateAttribute("index");
name.Value="single"+"["+i+"]";
index.Value = "0";
xnode.Attributes.Append(name);
xnode.Attributes.Append(index);
root.AppendChild(xnode);
i++;
}
package.PushItem("Output", package.CreateHtmlItem(xdoc.InnerText));
}
}
}
}
这里的“单”是多值字段。
我得到空白输出。
任何人都可以帮助如何做到这一点。
谢谢。
最佳答案
代替:
package.PushItem("Output", package.CreateHtmlItem(xdoc.InnerText));
使用
package.PushItem("Output", package.CreateHtmlItem(root.OuterXml));
此外,我注意到您没有在任何地方使用字段值。您正在迭代它,但没有将值添加到输出中,不确定这是否是您想要的
关于tridion - 在 SDL Tridion 2011 Sp1 中启用 .Net 模板构建 block 的内联编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10680224/