2012-05-08 86 views
2

我在SDL Tridion 2011 SP1中爲Dreamweaver TBB中的組件啓用SiteEdit 2009。將Enable Inline Editing添加到組件模板後在預覽組件時出錯

內容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並預覽了組件。它顯示了沒有錯誤的確切預覽。

我的組件模板的高級源看起來是這樣的:

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

當我添加「啓用內聯編輯」 2009年SiteEdit到組件模板它顯示了這個錯誤:

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

對不起。我錯過了。現在我已經用Template Builder的日誌更新了這個問題。 – Patan

+0

您是否在運行此代碼的服務器上安裝SiteEdit 2009?在這種情況下,這將是您與模板構建器連接的服務器。 – Quirijn

回答

2

它看起來像您已經閱讀了這個答案,並嘗試應用它:How to handle nested repeating regions in Dreamweaver TBBs in SDL Tridion 2011 SP1

在這種情況下,你也跟着在這個問題的答案調試暗示?如果是這樣,你看到的輸出是什麼?

Many people have problems writing constructs like these. I am no exception, I have just found that I can get most cases working by knowing that the crucial variables are: Field, FieldPath and TemplateRepeatIndex. When in doubt, simply embed this fragment into your DWT inside every TemplateBeginRepeat.

([email protected]@[email protected]@, [email protected]@[email protected]@) 
+0

謝謝你的回答。我發現我的TBB在沒有在組件模板中啓用內聯編輯的情況下工作正常。但是當它被包含時它會拋出錯誤。 – Patan

+0

「對象引用未設置爲對象的實例。」是主要的錯誤。 – Patan

+0

這也是我在應用XSLT TBB時也面臨的錯誤 – Patan

1

我猜想,有什麼不對這些行:

@@RenderComponentField(FieldPath+".CCC", 0)@@

我會嘗試寫出來的FieldPath會+「CCC」串聯看到其實你可以得到該值。我的印象是,有些事情不可能通過連接兩個字符串來獲得字段值,並且它只能在@@string_field_name${templateRepeatIndex}@@(與重複索引連接的字段值)但它已經有一段時間,因爲我嘗試過它真的看你是否可以先獲得價值輸出

如果你仍然無法解決它,是否有可能提供實際的組件XML和實際的DWT代碼?根據提供的示例代碼提供解決方案並不容易。

謝謝