我正在使用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吗?
答案 0 :(得分:6)
在Dreamweaver模板中,可以通过两种方式调用RenderComponenetPresentation()。
如果您正在遍历页面上的组件演示文稿(我认为您正在做什么?)
如果由于某种原因,您需要使用不同的模板渲染组件,而不是将其添加到页面中的组件。
假设您正在执行第一个操作,那么您已使用正确的模板将该组件添加到页面中。因此,你可以调用@@ RenderComponentPresentation()@@,不带这样的参数:
<html>
<head></head>
<body>
<!-- TemplateBeginRepeat name="Components" -->
@@RenderComponentPresentation()@@
<!-- TemplateEndRepeat -->
</body>
</html>
“IsQueryBased”与您的问题无关。它连接到SiteEdit和动态组件演示文稿。
更新 -
看起来你有2个问题:
查看问题1 - 假设您的组件数组不是页面上的组件演示文稿,那么您的初始方法几乎是正确的:
@@RenderComponentPresentation(Component.ID,"tcm:xx-xx-xx")@@
您应该能够从数组中获取组件ID,但您需要自己指定ComponentTemplate ID。
出于测试目的,首先硬编码组件模板的Tcm ID。
由于将Tcm ID放在模板中是不好的做法,因此您需要编写TBB以便在包中为您提供。然后,您可以替换用于测试的Tcm ID。
关于您的SiteEdit问题,如果不发布详细说明问题确切性质的新问题,this guide可能会有所帮助。