2

SDL Tridion2011SP1のDreamweaverTBBのコンポーネントに対してSiteEdit2009を有効にしています。

コンテンツ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内の繰り返し可能な埋め込み可能なスキーマ

DreamweaverTBBは次のとおりです。

<!-- 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>

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の制限ですか?

4

2 に答える 2

2

すでにこの回答を読んで適用しようとしたようです: SDL Tridion 2011 SP1 の Dreamweaver TBB でネストされた繰り返し領域を処理する方法

その場合、その回答のデバッグのヒントにも従いましたか? もしそうなら、あなたが見る出力は何ですか?

多くの人が、このような構造を書くのに問題を抱えています。私も例外ではありません。重要な変数が Field、FieldPath、および TemplateRepeatIndex であることを知っていれば、ほとんどのケースを機能させることができることがわかりました。疑わしい場合は、このフラグメントをすべての TemplateBeginRepeat 内の DWT に埋め込むだけです。

(FieldPath=@@FieldPath@@, TemplateRepeatIndex=@@TemplateRepeatIndex@@)
于 2012-05-08T13:38:13.957 に答える
1

これらの行に何か問題があると思います:

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

FieldPath+".CCC" 連結を書き出して、実際にその値を取得できることを確認します。2 つの文字列を連結してフィールド値を取得することは不可能であり、@@string_field_name${templateRepeatIndex}@@(繰り返しインデックスで連結されたフィールド値) でのみ可能であるという印象を受けましたが、試みてからしばらく経ちました。最初に出力する値を取得できるかどうかを実際に確認してください

それでも解決できない場合、実際のコンポーネント XML と実際の DWT コードを提供していただくことは可能ですか? 提供されているサンプル コードに基づいてソリューションを提供するのは簡単ではありません。

ありがとう

于 2012-05-08T15:02:05.933 に答える