在SDL Tridion 2011中的Dreamweaver模板构建块中处理多个组件演示文稿

时间:2012-05-25 06:21:10

标签: tridion tridion-2011

我正在使用SDL Tridion 2011 SP1中的Dreamweaver TBB。在TBB中,我使用的是来自不同组件演示的数据。

My Template Building Block looks like this.

主要组成部分:

<div>@@Component.Schema.Title@@</div>

<!-- TemplateBeginRepeat name="Fields.link" -->

    @@RenderComponentPresentation(Field, "tcm:1-8142-32")@@

<!-- TemplateEndRepeat -->

组件模板:tcm:1-8142-32

它的DWT TBB看起来像这样。

<!-- TemplateBeginIf cond="Component.Fields.text" --> 
    <div>@@RenderComponentField("text",0)@@</div>
<!-- TemplateEndIf -->

当我预览组件时,我得到了输出,所有组件演示都按预期执行。

输出:

SchemaName
    data1
    data2

然后我用页面TBB创建了页面。

<html>
    <head></head>
    <body>
        <!-- TemplateBeginRepeat name="Components" -->
            @@RenderComponentPresentation()@@
        <!-- TemplateEndRepeat -->
    </body>
</html>

输出不符合预期。组件模板“tcm:1-8142-32”未执行。

输出:

SchemaName

我想将SiteEdit设为链接组件。

我是否需要为现有模板添加额外的模板?我正在使用Tridion 2012 UI。

我发现我们需要添加isQueryBased,必须将属性设置为true。

如果是,是否可以帮助命令将其设置为真?

我不知道问题出在哪里。

任何人都可以帮我修改代码并为嵌入式组件实现SiteEdit吗?

1 个答案:

答案 0 :(得分:6)

在Dreamweaver模板中,可以通过两种方式调用RenderComponenetPresentation()。

  1. 如果您正在遍历页面上的组件演示文稿(我认为您正在做什么?)

  2. 如果由于某种原因,您需要使用不同的模板渲染组件,而不是将其添加到页面中的组件。

  3. 假设您正在执行第一个操作,那么您已使用正确的模板将该组件添加到页面中。因此,你可以调用@@ RenderComponentPresentation()@@,不带这样的参数:

    <html>
        <head></head>
        <body>
            <!-- TemplateBeginRepeat name="Components" -->
                @@RenderComponentPresentation()@@
            <!-- TemplateEndRepeat -->
        </body>
    </html>
    

    “IsQueryBased”与您的问题无关。它连接到SiteEdit和动态组件演示文稿。

    更新 -

    看起来你有2个问题:

    1. 如何为链接组件调用RenderComponentPresentation
    2. 如何使组件成为“SiteEditable”
    3. 查看问题1 - 假设您的组件数组不是页面上的组件演示文稿,那么您的初始方法几乎是正确的:

      @@RenderComponentPresentation(Component.ID,"tcm:xx-xx-xx")@@
      

      您应该能够从数组中获取组件ID,但您需要自己指定ComponentTemplate ID。

      出于测试目的,首先硬编码组件模板的Tcm ID。

      由于将Tcm ID放在模板中是不好的做法,因此您需要编写TBB以便在包中为您提供。然后,您可以替换用于测试的Tcm ID。

      关于您的SiteEdit问题,如果不发布详细说明问题确切性质的新问​​题,this guide可能会有所帮助。