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

Posted

技术标签:

【中文标题】在 SDL Tridion 2011 的 Dreamweaver 模板构建块中处理多个组件演示【英文标题】:handling multiple component presentations in Dreamweaver Template Building block in SDL Tridion 2011 【发布时间】:2012-05-25 06:21:10 【问题描述】:

我正在开发 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。

如果是,任何人都可以帮助该命令将其设置为 true 吗?

我不知道问题出在哪里。

谁能帮我修改代码并为嵌入式组件实现 SiteEdit?

【问题讨论】:

更新了给出的问题答案。但问题并没有解决。 我想对通过组件链接链接到主组件的组件实现站点编辑。 我已为您更新了答案,希望对您有所帮助 您使用的是哪个版本的 SiteEdit 和 Tridion?没有“Tridion SP1”也没有“SiteEdit 2012”,它们是什么?我假设您将 Tridion 2011 SP1 与 SiteEdit 2009 SP3 一起使用,但请使用正确的版本号更新问题。 使用正确版本编辑问题。抱歉输入错误。 【参考方案1】:

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

    如果您正在遍历页面上的组件表示(我认为您正在这样做?)

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

假设第一是您正在做的事情,那么您已经使用正确的模板将组件添加到页面中。因此,您可以调用 @@RenderComponentPresentation()@@ 而不使用这样的参数:

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

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

更新 -

您似乎有 2 个问题:

    如何为链接的组件调用 RenderComponentPresentation 如何使组件成为“SiteEditable”

看问题 1 - 假设您的组件数组不是页面上的组件演示文稿,您的初始方法几乎是正确的:

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

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

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

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

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

【讨论】:

我也试过了。输出没有变化。我正在尝试为链接到主要组件的组件实现站点编辑。

以上是关于在 SDL Tridion 2011 的 Dreamweaver 模板构建块中处理多个组件演示的主要内容,如果未能解决你的问题,请参考以下文章

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

如何在 SDL Tridion 2011 SP1 中将一个 XSLT TBB 的输出传递到另一个 XSLT TBB

xml SDL Tridion 2011/2013 SmartTarget的CD logback配置示例。我用它来解决开发现状上的SmartTarget问题

xml SDL Tridion 2011/2013 SmartTarget的CD logback配置示例。我用它来解决开发现状上的SmartTarget问题

将大型二进制文件上传到 SDL Tridion Multimedia Components 时出错

xml SDL Tridion内容交付日志配置。