tinyMCE4 не может заставить работать внешние шаблоны - PullRequest
0 голосов
/ 06 июня 2018

Я очень новичок в tinyMCE (и в JavaScript), поэтому извините, если ответ на мой вопрос очевиден.(Я также работаю над кодом и файлами, созданными другим разработчиком и с которыми я не слишком знаком.)

Мне нужно использовать внешний файл шаблона для tinyMCE4, и я не могу его получитьРабота.Я посмотрел документацию на tinyMCE4, но не понимаю, в чем дело.

Файл tinyMCE находится в файле index.cfm, а список шаблонов - в отдельном файле.template_list.js.

Содержимое template_list.js:

var tinyMCETemplateList = [
 ["Name", "templates/file1.cfm", "Name."],
 ["Name2", "templates/file2.cfm", "Name2."],
...
];

В index.cfm я включил "template" в строку плагинов.

Чтобы вытащитьв шаблонах для отображения в виде списка в раскрывающемся списке, чтобы пользователь мог выбрать шаблон, я пробовал:

template_external_list_url: "tinymce/js/tinymce/template_list.js"

При этом, когда я запускаю программу и нажимаю кнопку Вставить шаблон, яполучаю ошибку «Шаблоны не определены».

Я также пробовал:

templates : [{url:"tinymce/js/tinymce/template_list.js"}] 

При этом появляется диалоговое окно Вставить шаблон, но раскрывающийся список пуст, иНеобработанный код из template_list.js появляется в текстовой области под раскрывающимся списком.Я получаю тот же результат, если я изменяю код в template_list.js на:

[
 {title: "Name", url: "templates/file1.cfm", description: "Name."},
 {title: "Name2", url: "templates/file2.cfm", description: "Name2."},
...
]

... а также если я добавляю цитаты вокруг "title", "url" и "description".

Опять же, извините, если ответ очевиден, но как новичок, я ценю любую помощь.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Я нашел это действительно расстраивающим и беспокойным, чтобы вообще начать работать.В конечном итоге я вызываю функцию в другом js-файле, который возвращает массив, который я передаю параметру шаблонов.

function GetTemplateArray()
{
    return new Array(
        {
            title: "2 Columns",
            url: "templates/template1.html",
            description: "Adds a 2 column table"
        },
        {
            title: "3 Columns",
            url: "templates/scf/template2.html",
            description: "Adds a 3 column table"
        }
    );
}

Тогда в коде tinymce.init:

    tinymce.init(
    {
    ...
        templates: GetTemplateArray(),
    ...
0 голосов
/ 06 июня 2018

Согласно документации, объект конфигурации TinyMCE ожидает, что вы передадите массив, содержащий один объект для каждого шаблона.На высоком уровне это будет выглядеть так:

tinymce.init({
  selector: "textarea",  // change this value according to your HTML
  plugins: "template",
  menubar: "insert",
  toolbar: "template",
  templates: [
    {title: 'Item 1', description: 'Desc 1', content: 'My content'},
    {title: 'Item 2', description: 'Desc 2', url: 'development.html'}
  ]
});

Вы заметите, что параметру конфигурации templates передано значение array из objects - это то, что ожидает TinyMCE, поэтому независимо от того, что выдолжен возвращать array из objects.

. Вы можете вставить HTML-шаблон напрямую (как показано в первом примере выше) или указать URL-адрес, который браузер может получить при инициализации TinyMCE.(как показано во втором примере выше).Не существует параметра конфигурации template_external_list_url, поэтому он не работает, поскольку он недопустим.

Если вы хотите вывести шаблоны за пределы конфигурации TinyMCE, вы можете поместить данные в файл и ссылаться на них через URL-адрес.Например:

tinymce.init({
  selector: "textarea",  // change this value according to your HTML
  plugins: "template",
  menubar: "insert",
  toolbar: "template",
  templates: "/path/to/the/file/templates.php"
});

Ссылочный URL-адрес должен возвращать array из objects, поскольку в конечном итоге это то, что ожидает TinyMCE.В приведенном выше примере, похоже, подразумевается, что ваш внешний файл возвращает переменную JavaScript с именем tinyMCETemplateList, но это ничего не значит для TinyMCE, поэтому, хотя файл может быть загружен, то, что «возвращается», не является массивом объектов JavaScript.

Я бы посоветовал вам начать с работы без внешних шаблонов (просто убедитесь, что у вас работают основы).Затем перенесите содержимое в отдельный файл и убедитесь, что файл возвращает array из objects.Я хотел бы отметить, что ваш пример использования tinyMCETemplateList, похоже, возвращает массив из массивов , что совсем не то, что ожидает TinyMCE.

...