2012-07-31 78 views
3

我想帶我的自定義aspx頁面「插入組件演示」功能(將「插入CP」按鈕,單擊彈出)如何獲取insertcomponentpresentation窗口彈出?

  1. 創建一個自定義按鈕「插入CP」(完成)
  2. 當用戶從富文本框中選擇任何文本並單擊該按鈕時,我需要打開一個窗口,用戶可以在其中選擇組件和組件模板。

可以在任何一個給定的建議/想法如何把窗口,用戶可以選擇componetn和組件模板(象,當用戶打開一個頁面,瀏覽到組件演示選項卡,然後他點擊時「插入」按鈕,相同的功能是要尋找從Component豐富的文本框)

+0

您是否在問如何打開「Select Component Presentation」彈出菜單? – 2012-07-31 14:58:04

+0

是的坦白,如果用戶將從富文本框中選擇一個文本並點擊按鈕,我需要打開「選擇組件演示」彈出窗口。 – SDLBeginner 2012-07-31 15:10:32

+1

在這種情況下,請參閱下面的答案。 – 2012-07-31 15:16:48

回答

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子目錄我的外表套上安裝文件夾的那個值

這導致了一個單發命中在一個名爲ComponentPresentations.js:

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

考慮到這是在從HTML按鈕開啓進入一個功能控件,其餘的只是一個跟隨ComponentPresentation.js中的按鈕發生的事情。

+1

+1爲答案,如果可以的話,另一個關於如何調查其他控件的說明+1! – 2012-08-02 00:28:41

2

爲了讓你對這個問題的根源一些更多的信息:根據您的需求,在大多數情況下,你並不真的需要參考分量模板的一部分,當你上呈現的內容交付部件零件鏈接。

僅當您在網站上使用具有不同組件模板的相同組件時,才需要在內容交付期間呈現組件模板部件。是的,內容傳送API中有一個組件模板參數/參數,但僅用於這種情況。

即使在不同頁面上使用具有不同組件模板的相同組件的情況下,最好直接獲取組件模板的優先級,而不是直接引用組件模板。您可以在Tridion文檔中閱讀有關模板優先級的更多信息。

底線:在大多數情況下,您只需要使用組件URI製作組件鏈接。詳細瞭解Tridion文檔中的鏈接優先級。