如何弹出插入组件演示窗口?

时间:2012-07-31 14:44:36

标签: tridion tridion-2011

我想在我的自定义aspx页面中显示“插入组件演示”功能(点击“插入CP”按钮会弹出)

  1. 创建了自定义按钮“插入CP”(完成)
  2. 当用户从富文本框中选择任何文本并单击该按钮时,我需要打开一个窗口,用户可以在其中选择组件和组件模板。
  3. 任何人都可以提供建议/想法如何将窗口带到用户可以选择组件和组件模板的位置(例如,当用户打开页面时,导航到组件显示选项卡,当他单击“插入”按钮时,我正在从“组件富文本”框中查看相同的功能。)

2 个答案:

答案 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方法中执行。我不会在这里重现代码,因为你可以查找它并且 受版权保护的材料(我会假设只是复制上面的代码段在某种程度上属于合理使用)。


注意 :我得到了这个答案:

  1. 右键单击“页面弹出窗口”的“组件演示文稿”选项卡上的“插入”按钮
  2. 选择“Inspect element”
  3. 记录元素的id(在这种情况下为buttonComponentInsert
  4. 在我的Tridion安装文件夹的web\WebUI子目录中搜索该值
  5. 这导致了一个名为ComponentPresentations.js的文件中的单击:

    buttons.Insert = $controls.getControl($("#buttonComponentInsert"),
                                          "Tridion.Controls.Button");
    

    鉴于这是将HTML中的按钮转换为功能控件的地方,剩下的就是跟踪ComponentPresentation.js中该按钮发生的事情。

答案 1 :(得分:2)

为您提供有关问题根源的更多信息:根据您的需要,在大多数情况下,在内容交付部件上呈现组件链接时,您实际上并不需要引用组件模板部件。

只有当您在网站上使用具有不同组件模板的相同组件时,才需要在内容交付期间呈现组件模板部件。是的,内容交付API中有一个组件模板参数/参数,但它仅用于这种情况。

即使在不同页面上使用具有不同组件模板的相同组件的情况下,最好还是直接获取组件模板优先级,而不是直接引用组件模板。您可以在Tridion文档中阅读有关模板优先级的更多信息。

底线:在大多数情况下,您只需要使用组件URI制作组件链接。阅读有关在Tridion文档中链接优先级的更多信息。