在Dreamweaver Templating中,我们可以通过两种方式访问组件的字段。
1.@@Component.Field.FieldName@@
2.@@RenderComponentField("FieldName",0)@@
与访问组件演示
类似 1.RenderComponentPresentation()
有没有办法以另一种方式访问它。
答案 0 :(得分:5)
你应该考虑编辑你的问题并澄清它 有点让你更清楚你所要求的。读所有的 回答你解雇和他们的评论,我想你正在努力 完成是在页面上编辑一些组件演示文稿 和其他人没有。
根据您使用的SiteEdit版本,有两种解决方案:
SiteEdit 2009 SP3 - 您应该从您不想编辑的组件模板中删除内联编辑TBB,页面仍然会生成悬停在组件演示文稿上以便移动它。
UI 2012(新UI或体验管理器) - 您可以通过组件模板中的复选框禁用每个组件模板的内联编辑。
如果您还需要删除组件演示文稿上的悬停,那么我认为唯一的解决方案是删除页面模板的内联编辑功能(对于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}" />
但在这种情况下,这些动态组件演示文稿将不会在发布页面中发布。因此,您应该在发布页面之前发布它们。