0

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

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

类似于访问组件表示

  1.RenderComponentPresentation()

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

4

5 回答 5

5

你真的应该考虑编辑你的问题并澄清一下,以更清楚地说明你在问什么。阅读您驳回的所有答案及其评论,我认为您想要完成的是让页面上的一些组件演示文稿可编辑,而其他则不是。

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

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

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

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

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

于 2012-08-03T08:43:00.153 回答
4

Tridion、SiteEdit 2009 和新的 UI/Experience Manager 附带的默认 TBB 都坚持围绕组件表示和组件字段生成标记。您可以控制它们生成的标记元素,但目前无法关闭它们。

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

于 2012-08-07T11:41:50.010 回答
1

RenderComponentPresentation 将来自页面模板,第一个示例来自组件模板,或者在例如重复区域内:

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

    Fields.*FieldName*

<!-- TemplateEndRepeat -->

但无论哪种方式,你为什么要问?

于 2012-08-03T06:09:50.813 回答
1

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

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

其中参数是您希望渲染的组件的 tcm id,以及用于渲染它的模板。

于 2012-08-03T06:12:49.530 回答
1

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

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

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

于 2012-08-03T06:29:53.613 回答