如何在SDL Trdion 2011 Sp1中访问除RenderComponentPresentaion之外的组件演示

时间:2012-08-03 05:40:05

标签: tridion tridion-2011

在Dreamweaver Templating中,我们可以通过两种方式访问​​组件的字段。

  1.@@Component.Field.FieldName@@
  2.@@RenderComponentField("FieldName",0)@@

与访问组件演示

类似
  1.RenderComponentPresentation()

有没有办法以另一种方式访问​​它。

5 个答案:

答案 0 :(得分:5)

  

你应该考虑编辑你的问题并澄清它   有点让你更清楚你所要求的。读所有的   回答你解雇和他们的评论,我想你正在努力   完成是在页面上编辑一些组件演示文稿   和其他人没有。

根据您使用的SiteEdit版本,有两种解决方案:

  1. SiteEdit 2009 SP3 - 您应该从您不想编辑的组件模板中删除内联编辑TBB,页面仍然会生成悬停在组件演示文稿上以便移动它。

  2. UI 2012(新UI或体验管理器) - 您可以通过组件模板中的复选框禁用每个组件模板的内联编辑。

  3. 如果您还需要删除组件演示文稿上的悬停,那么我认为唯一的解决方案是删除页面模板的内联编辑功能(对于SE 2009 SP3,删除TBB和UI 2012禁用它在页面模板上)并在页面模板中自己生成所有必需的SiteEdit标记。

    所有这一切的一个有趣的问题是“为什么?”,您的要求恰恰是需要仅对页面上的某些内容启用内联编辑。因为您还可以通过(编辑)某些用户组的权限来实现这一目的。

答案 1 :(得分:4)

Tridion,SiteEdit 2009和新UI / Experience Manager附带的默认TBB都坚持在Component Presentations和Component Fields周围生成标记。您可以控制它们生成的标记元素,但目前无法关闭它们。

为了获得这样的完全控制,我创建了一个简单的扩展函数,用于DWT模板。您可以在此处找到它:http://code.google.com/p/tridion-practice/wiki/TridionUI2012FunctionsForUseInHtmlTemplates

答案 2 :(得分:1)

RenderComponentPresentation来自页面模板,第一个例子来自组件模板,或者例如一个重复的区域:

<!-- TemplateBeginRepeat name="Components" -->

    Fields.*FieldName*

<!-- TemplateEndRepeat -->

但无论如何,你为什么要问?

答案 3 :(得分:1)

您还可以使用以下代码从另一个组件模板中调用RenderComponentPresentation:

@@RenderComponentPresentation(Component.ID, ComponentTemplate.ID)@@

参数是您要渲染的组件的tcm ID,以及用于渲染它的模板。

答案 4 :(得分:1)

对于动态组件演示,您可以在页面模板中使用以下内容:

<tcdl:ComponentPresentation type="Dynamic" componentURI="${ComponentID}" templateURI="${DynamicComponentTemplateID}" />

但在这种情况下,这些动态组件演示文稿将不会在发布页面中发布。因此,您应该在发布页面之前发布它们。