tridion - 在 SDL Tridion 2011 Sp1 中启用 .Net 模板构建 block 的内联编辑

标签 tridion tridion-2011

我正在 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/

相关文章:

workflow - 重新启动 WF 事件时 EDA_ITEMS_UPDATE 存储过程上的 Tridion 工作流错误

tridion - 如何更新 Tridion 受众经理联系人中的空 ExtendedDetail?

tridion - 取消组件本地化会破坏历史记录吗?

tridion - 在 Tridion 2011 中部署 PDF 的最简单方法

tridion - 有时在传输阶段发布失败,错误为 "Internal Server Error"

c# - Tridion 2009 - 使用 Interops - 是否有可能为同一个名称添加多个 setConditions

tridion - DD4T 和关键字元数据

regex - Javascript - 用于验证 tridion tcm id 的正则表达式

tridion - 在 Tridion 中实现脚注

tridion - 使用 SDL Tridion 2011 SP1 在富文本字段中创建 anchor 链接