在 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问题