php – Joomla! 如何在編輯器的外掛視窗,插入內容到外層

在 Joomla! 內容編輯器 editor 例如 tinyMCE ,當我們在製作外掛套件 plugin 的時候,如何在彈跳出來的視窗插入內容到外層的編輯器呢?例如點擊文章以後會插入到外層編輯器
直覺一點會想到使用該編輯器如 tinyMCE 提供的 API 插入,例如
1 2 3 |
window.parent.tinyMCE.activeEditor.execCommand('mceInsertContent', false, '<div>Hello World</div>'); |
但問題是 Joomla! 的編輯器不只一種
所以如果只使用 tinyMCE 的插入編輯器 API ,那麼在其他編輯器一定無法運作,所以我們要使用 Joomla! 的編輯器 API 做插入
1 2 3 |
window.parent.Joomla.editors.instances['jform_editor'].replaceSelection('<div>Hello World</div>') |
或是簡單方便一點的寫法
1 2 3 |
window.parent.jInsertEditorText('<div>Hello World</div>', 'jform_editor') |
這樣就能透過 Joomla! 的 API 轉自動對應到不同原生編輯器的 API 囉。除了 replaceSelection() 在當前游標插入之外,還有其他 function 可以使用,我們可以在
1 2 3 |
console.log(window.parent.Joomla.editors.instances['jform_editor']) |
中找到,例如 getValue(), onSave(), replaceSelection(), setValue()。
插入元素後要緊接關閉視窗,可以加入
1 2 3 |
window.parent.jModalClose(); |