3

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

  1. 创建了一个自定义按钮“插入 CP”(完成)
  2. 当用户从富文本框中选择任何文本并单击按钮时,我需要打开一个窗口,用户可以在其中选择组件和组件模板。

任何人都可以提供建议/想法如何使用户可以选择组件和组件模板的窗口(例如,当用户打开页面时,导航到组件演示选项卡,当他单击“插入”按钮时,相同的功能是我正在从组件富文本框中查找。)

4

2 回答 2

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. 选择“检查元素”
  3. 记录元素的 id(buttonComponentInsert在这种情况下)
  4. web\WebUI在我的 Tridion 安装文件夹的子目录中搜索该值

这导致了一个名为 ComponentPresentations.js 的文件中的单个命中:

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

鉴于这是将 HTML 中的按钮转换为功能控件的地方,剩下的只是关注 ComponentPresentation.js 中该按钮发生的情况。

于 2012-07-31T15:06:19.060 回答
2

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

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

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

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

于 2012-08-01T08:58:09.090 回答