在 Dreamweaver 模板中,我们可以通过两种方式访问组件的字段。
1.@@Component.Field.FieldName@@
2.@@RenderComponentField("FieldName",0)@@
类似于访问组件表示
1.RenderComponentPresentation()
有没有办法以另一种方式访问它。
在 Dreamweaver 模板中,我们可以通过两种方式访问组件的字段。
1.@@Component.Field.FieldName@@
2.@@RenderComponentField("FieldName",0)@@
类似于访问组件表示
1.RenderComponentPresentation()
有没有办法以另一种方式访问它。
你真的应该考虑编辑你的问题并澄清一下,以更清楚地说明你在问什么。阅读您驳回的所有答案及其评论,我认为您想要完成的是让页面上的一些组件演示文稿可编辑,而其他则不是。
根据您使用的 SiteEdit 版本,有两种解决方案:
SiteEdit 2009 SP3 - 您应该从您不想编辑的组件模板中删除内联编辑 TBB,页面仍会在组件演示文稿上生成悬停,以便可以移动它。
UI 2012(新 UI 或 Experience Manager)- 您可以通过组件模板中的复选框禁用每个组件模板的内联编辑。
如果您还需要删除组件演示文稿上的悬停,那么我认为唯一的解决方案是删除页面模板的内联编辑功能(对于 SE 2009 SP3,删除 TBB 并在 UI 2012 上禁用它页面模板)并在页面模板中自己生成所有需要的 SiteEdit 标记。
所有这一切的一个有趣的问题是“为什么?”,您究竟有什么要求只需要对页面上的某些内容启用内联编辑。因为您也可以通过某些用户组的(编辑)权限来实现这一点。
Tridion、SiteEdit 2009 和新的 UI/Experience Manager 附带的默认 TBB 都坚持围绕组件表示和组件字段生成标记。您可以控制它们生成的标记元素,但目前无法关闭它们。
为了获得这样的完全控制,我创建了一个用于 DWT 模板的简单扩展函数。你可以在这里找到它:http ://code.google.com/p/tridion-practice/wiki/TridionUI2012FunctionsForUseInHtmlTemplates
RenderComponentPresentation 将来自页面模板,第一个示例来自组件模板,或者在例如重复区域内:
<!-- TemplateBeginRepeat name="Components" -->
Fields.*FieldName*
<!-- TemplateEndRepeat -->
但无论哪种方式,你为什么要问?
您还可以使用以下代码从另一个组件模板中调用 RenderComponentPresentation:
@@RenderComponentPresentation(Component.ID, ComponentTemplate.ID)@@
其中参数是您希望渲染的组件的 tcm id,以及用于渲染它的模板。
对于动态组件演示,您可以在页面模板中使用以下内容:
<tcdl:ComponentPresentation type="Dynamic" componentURI="${ComponentID}" templateURI="${DynamicComponentTemplateID}" />
但在这种情况下,这些动态组件演示不会在发布页面期间发布。因此,您应该在发布页面之前发布它们。