将“启用内联编辑”添加到“组件模板”后预览组件时出错

时间:2012-05-08 06:59:32

标签: tridion

我在SDL Tridion 2011 SP1中为Dreamweaver TBB中的Component启用SiteEdit 2009。

内容XML:

<Content>
    <AAA>
        <BBB>
            <CCC>Title 1</CCC>
            <DDD>Name 1</DDD>
        </BBB>
        <BBB>
            <CCC>Title 2</CCC>
            <DDD>Name 2</DDD>
        </BBB>
    </AAA>

    <AAA>
        <BBB>
            <CCC>Title 1</CCC>
            <DDD>Name 1</DDD>
        </BBB>
        <BBB>
            <CCC>Title 2</CCC>
            <DDD>Name 2</DDD>
        </BBB>
    </AAA>

</Content>

字段的描述是:

  • AAA - 可重复嵌入式架构
  • BBB - AAA内的可重复嵌入式架构

Dreamweaver TBB是:

<!-- TemplateBeginRepeat name="AAA" -->

    <!-- TemplateBeginRepeat name="Field.BBB" -->
        <div>@@RenderComponentField(FieldPath+".CCC", 0)@@ </div>
        <div>@@RenderComponentField(FieldPath+".DDD", 0)@@ </div>
    <!-- TemplateEndRepeat -->

<!-- TemplateEndRepeat -->

我在组件模板中添加了此TBB并预览了Component。它显示了没有错误的确切预览。

我的组件模板的高级源代码如下:

<TemplateInvocation>Dreamweaver TBB</TemplateInvocation>
<TemplateInvocation>Enable Inline Editing</TemplateInvocation>

当我将SiteEdit 2009的“启用内联编辑”添加到组件模板时,它显示以下错误:

Debugging was started in process 'TcmTemplateDebugHost' with id 9244
Object reference not set to an instance of an object.
at Tridion.ContentManager.Templating.Templates.EnableInlineEditing.FindItemFieldXPath(String[] parts, Int32 currentIndex, ItemFields fields, Boolean& isMultiValue)
at Tridion.ContentManager.Templating.Templates.EnableInlineEditing.FindItemFieldXPath(String[] parts, Int32 currentIndex, ItemFields fields, Boolean& isMultiValue)
at Tridion.ContentManager.Templating.Templates.EnableInlineEditing.FindItemFieldXPath(String[] parts, Int32 currentIndex, ItemFields fields, Boolean& isMultiValue)
at Tridion.ContentManager.Templating.Templates.EnableInlineEditing.DetermineXPathForField(TcmUri componentUri, String fieldName, Boolean& isMultiValue)
at Tridion.ContentManager.Templating.Templates.EnableInlineEditing.ProcessComponentFieldTag(ITcdlTag tag)
at Tridion.ContentManager.Templating.TcdlParser.ProcessText(String text, TagHandler tagHandler, Boolean& wasModified)
at Tridion.ContentManager.Templating.TcdlParser.ProcessText(String text, TagHandler tagHandler)
at Tridion.ContentManager.Templating.TcdlParser.Process(Item item, TagHandler tagHandler)
at Tridion.ContentManager.Templating.Assembly.AssemblyMediator.Transform(Engine engine, Template template, Package package)
at Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.RunTemplate(Engine engine, Package package, String templateUri, String className)
at Tridion.Templating.CSharpTemplate.CSharpSourceTemplate.Transform(Engine __engine, Package __package)
at Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.Transform(Engine engine, Template template, Package package)
at Tridion.ContentManager.Templating.Engine.ExecuteTemplate(Template template, Package package)
at Tridion.ContentManager.Templating.Engine.InvokeTemplate(Package package, TemplateInvocation templateInvocation, Template template)
at Tridion.ContentManager.Templating.Compound.CompoundTemplateMediator.Transform(Engine engine, Template templateToTransform, Package package)
at Tridion.ContentManager.Templating.Engine.ExecuteTemplate(Template template, Package package)
at Tridion.ContentManager.Templating.Engine.InvokeTemplate(Package package, TemplateInvocation templateInvocation, Template template)
at Tridion.ContentManager.Templating.Engine.TransformPackage(Template template, Package package)
at Tridion.ContentManager.Templating.Debugging.DebuggingEngine.Run()
at Tridion.ContentManager.Templating.Debugging.DebugSession.Run()       

任何人都可以分享他们的观点吗?

这是SiteEdit 2009的限制吗?

2 个答案:

答案 0 :(得分:2)

看起来您已经阅读了这个答案并尝试应用它:How to handle nested repeating regions in Dreamweaver TBBs in SDL Tridion 2011 SP1

在这种情况下,您是否也按照该答案中的调试提示进行操作?如果是这样,你看到的输出是什么?

  

许多人在编写像这样的结构时遇到了问题。我也不例外,我刚刚发现我可以通过知道关键变量是:Field,FieldPath和TemplateRepeatIndex来使大多数情况起作用。如有疑问,只需将此片段嵌入到每个TemplateBeginRepeat内的DWT中。

(FieldPath=@@FieldPath@@, TemplateRepeatIndex=@@TemplateRepeatIndex@@)

答案 1 :(得分:1)

我猜这些行有问题:

  @@ RenderComponentField(FieldPath +“。CCC”,0)@@

我会尝试编写FieldPath +“。CCC”连接,看看你实际上可以获得该值。我的印象是,通过连接两个字符串来获得字段值是不可能的,并且它只能在@@string_field_name${templateRepeatIndex}@@(与重复索引连接的字段值)上获得,但它是一个虽然我已经尝试了,所以真的看看你是否可以先得到输出值

如果仍然无法解决问题,您是否可以提供实际的组件XML和实际的DWT代码?根据提供的示例代码提供解决方案并不容易。

由于