我想在我的自定义aspx页面中显示“插入组件演示”功能(点击“插入CP”按钮会弹出)
任何人都可以提供建议/想法如何将窗口带到用户可以选择组件和组件模板的位置(例如,当用户打开页面时,导航到组件显示选项卡,当他单击“插入”按钮时,我正在从“组件富文本”框中查看相同的功能。)
答案 0 :(得分:10)
看一下ComponentPresentations.js,它会打开弹出窗口:
Tridion.Cme.ComponentPresentationsTab.prototype.onInsertClick =
function ComponentPresentationsTab$onInsertClick()
{
var p = this.properties;
if (p.insertDialog.isOpen())
{
p.insertDialog.focus();
}
else
{
p.insertDialog.open();
}
};
在此之前,它当然需要确保p.insertDialog
已正确初始化,它在_initializeInsertDialog
方法中执行。我不会在这里重现代码,因为你可以查找它并且 是 受版权保护的材料(我会假设只是复制上面的代码段在某种程度上属于合理使用)。
注意 :我得到了这个答案:
buttonComponentInsert
)web\WebUI
子目录中搜索该值这导致了一个名为ComponentPresentations.js的文件中的单击:
buttons.Insert = $controls.getControl($("#buttonComponentInsert"),
"Tridion.Controls.Button");
鉴于这是将HTML中的按钮转换为功能控件的地方,剩下的就是跟踪ComponentPresentation.js中该按钮发生的事情。
答案 1 :(得分:2)
为您提供有关问题根源的更多信息:根据您的需要,在大多数情况下,在内容交付部件上呈现组件链接时,您实际上并不需要引用组件模板部件。
只有当您在网站上使用具有不同组件模板的相同组件时,才需要在内容交付期间呈现组件模板部件。是的,内容交付API中有一个组件模板参数/参数,但它仅用于这种情况。
即使在不同页面上使用具有不同组件模板的相同组件的情况下,最好还是直接获取组件模板优先级,而不是直接引用组件模板。您可以在Tridion文档中阅读有关模板优先级的更多信息。
底线:在大多数情况下,您只需要使用组件URI制作组件链接。阅读有关在Tridion文档中链接优先级的更多信息。