Добавить пользовательские пункты меню в tinymce

Я хочу добавить пользовательское меню в tinymce. Я просто хочу нажать на подэлемент и вставить текст. Как я могу это сделать?

Я хочу сделать это через плагин.


person dzervas    schedule 03.06.2016    source источник


Ответы (3)


Вы можете сделать это напрямую через объект конфигурации TinyMCE (плагин не нужен). Вы можете добавить функцию setup в объект конфигурации, а затем добавить либо кнопку панели инструментов, либо пункт меню, чтобы делать то, что вы хотите.

Функция настройки Объект конфигурации TinyMCE может иметь функцию настройки, с помощью которой вы можете добавлять функциональные возможности в редактор. Это простая функция:

tinymce.init({
  selector: 'textarea',  // change this value according to your HTML
  .
  .
  .
  setup: function (editor) {
    //Your setup code here... 
  }
});

Затем вы можете добавить либо кнопку панели инструментов, либо пункт меню с помощью этой функции настройки, как описано ниже.

Пример кнопки панели инструментов:

setup: function (editor) {
    editor.addButton('customButton', {
        text: 'My Custom Button',
        context: 'tags',
        onclick: function () { 
            editor.insertContent('content to insert goes here');
        }
    });
}

Не забудьте добавить эту кнопку на панель инструментов в конфигурации TinyMCE.

Пример меню

setup: function (editor) {
    editor.addMenuItem('custommenuitem', {
        text: 'Text for Menu Item', 
        context: 'insert',
        onclick: function () { 
            editor.insertContent('content to insert goes here');
        }
    });
}

Теперь он появится в меню "Вставка" (в зависимости от настройки контекста)

person Michael Fromin    schedule 03.06.2016
comment
Если вам нужно собственное меню верхнего уровня (в отличие от размещения кнопки в существующем меню), вы можете сделать это: tinymce.com/docs/demo/custom-toolbar-menu-button - person Michael Fromin; 03.06.2016
comment
как я могу сделать это с помощью плагина Impress Pages? - person dzervas; 03.06.2016
comment
Кроме того, я думаю, что страницы Impress используют tinymce 3 - person dzervas; 03.06.2016
comment
Демонстрационный сайт Impress Pages использует TinyMCE 4.1.6, по крайней мере, текущая версия не использует TinyMCE 3. Что касается создания плагина Impress Pages - я понятия не имею, поскольку у меня нет опыта работы с этим инструментом. Возможно, вы можете спросить об этом через службу поддержки Impress Pages? - person Michael Fromin; 03.06.2016

Вот пример плагина, который модифицирует TinyMCE http://market.impresspages.org/plugins/JustifyAlign

В качестве примера можно взять другие плагины, связанные с TinyMCE: http://market.impresspages.org/plugins.

person Mangirdas Skripka    schedule 04.06.2016
comment
Я знаю это. Проблема в том, КАК я собираюсь изменить панель инструментов tinymce с помощью плагина impress pages, чтобы добавить меню. Ответ, который оставил Майкл, требует, чтобы я изменил функцию установки, поэтому мне придется изменить основные файлы. - person dzervas; 05.06.2016

Сначала вам нужно прочитать документацию плагина ImpressPages, чтобы понять, как создать плагин https://www.impresspages.org/docs/plugin.

Вы перейдете к той части, где вы добавите папку с ресурсами, в которую вы поместите файл конфигурации tinymce.

как этот:

var originalConfigFunction = ipcustomMceConfig;

var ipcustomMceConfig = function () {
var originalConfig = originalConfigFunction();



return originalConfig;
}

var Custom = ipcustomMceConfig;
var ipcustomMceConfig = function () {
var originalConfig = Custom();
originalConfig.toolbar2 = originalConfig.toolbar2 + ' example ';
originalConfig.external_example_path = ip.baseUrl + 'Plugin/example/';


if (!originalConfig.external_plugins) {
    originalConfig.external_plugins = {};
}
originalConfig.external_plugins.example = ip.baseUrl + 'Plugin/Custom/assets/example/plugin.min.js';
originalConfig.content_css = 'url/sample/css';
originalConfig.extended_valid_element = 'span[class]';

return originalConfig;

}

Вот как вы добавляете элемент на панель инструментов в качестве плагина. Обратите внимание на ip.baseUrl, который очень важен для вас, чтобы он оставался динамичным, избегая использования жестко запрограммированных путей.

Посмотрите на этот плагин, например https://github.com/impresspages-plugins/TinyMceFileBrowser, один раз вы просматриваете структуру и каждый файл в ней, вы получите хорошее представление.

person Jacobo López    schedule 26.09.2016