我想在我的自定义 aspx 页面中引入“插入组件演示”功能(单击“插入 CP”按钮会弹出)
- 创建了一个自定义按钮“插入 CP”(完成)
- 当用户从富文本框中选择任何文本并单击按钮时,我需要打开一个窗口,用户可以在其中选择组件和组件模板。
任何人都可以提供建议/想法如何使用户可以选择组件和组件模板的窗口(例如,当用户打开页面时,导航到组件演示选项卡,当他单击“插入”按钮时,相同的功能是我正在从组件富文本框中查找。)
我想在我的自定义 aspx 页面中引入“插入组件演示”功能(单击“插入 CP”按钮会弹出)
任何人都可以提供建议/想法如何使用户可以选择组件和组件模板的窗口(例如,当用户打开页面时,导航到组件演示选项卡,当他单击“插入”按钮时,相同的功能是我正在从组件富文本框中查找。)
看看 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
在我的 Tridion 安装文件夹的子目录中搜索该值这导致了一个名为 ComponentPresentations.js 的文件中的单个命中:
buttons.Insert = $controls.getControl($("#buttonComponentInsert"),
"Tridion.Controls.Button");
鉴于这是将 HTML 中的按钮转换为功能控件的地方,剩下的只是关注 ComponentPresentation.js 中该按钮发生的情况。
为您提供有关问题根源的更多信息:根据您的需要,在大多数情况下,当您在内容交付部分呈现组件链接时,您实际上并不需要参考组件模板部分。
仅当您在网站上使用具有不同组件模板的相同组件时,才需要在内容交付期间呈现组件模板部分。是的,内容交付 API 中有一个组件模板参数/参数,但它仅用于这些情况。
即使您确实在不同页面上使用具有不同组件模板的相同组件,最好正确获取组件模板优先级,而不是直接引用组件模板。您可以在 Tridion 文档中阅读有关模板优先级的更多信息。
底线:在大多数情况下,您只需要使用组件 URI 创建组件链接。在 Tridion 文档中阅读有关链接优先级的更多信息。