CKEditor: Как автоматически применить / загрузить шаблон в редакторе? - PullRequest
1 голос
/ 25 сентября 2010

Я использую редактор WYSIWYG CKeditor на одном из моих веб-сайтов. Чтобы быть более удобным для пользователя, я хотел бы автоматически загружать определенный шаблон при каждом использовании редактора. Клиент должен применить этот шаблон, чтобы иметь хорошую интеграцию с остальной частью веб-сайта (который разработан с контентом, отображаемым в двух столбцах), поэтому я хотел бы упростить его задачу.

Сейчас я использую следующий код, который я нашел на форуме CKeditor:

CKEDITOR.replace("newsContent", {
    customConfig : "/ckeditor/config/news.js",
    on:{ instanceReady : function( ev ) { 
           this.execCommand('templates');
       }
    },
});

Это почти хорошо, потому что позволяет открыть страницу выбора шаблона, и поэтому пользователь может выбрать шаблон непосредственно перед редактированием (у него есть только один выбор).

Но я хотел бы применить (только) шаблон, не прося пользователя выбрать его на странице выбора шаблона.

Так что мне интересно, существует ли такая функция, как "execCommand", чтобы применить шаблон в редакторе? Я думаю, что это действие выполняется, когда я нажимаю на шаблон на странице выбора шаблона, но я не могу найти его в документации.

Спасибо за вашу помощь.

Ответы [ 4 ]

2 голосов
/ 14 сентября 2012

Я попробовал точно такую ​​же вещь, и я должен сообщить, что с текущей версией решения ckeditor ork не работает. После нескольких часов, потраченных на выяснение того, как заставить ckeditor загружать плагин шаблона (ckeditor полностью загружает плагин шаблона после того, как вы открыли диалог шаблонов), я сдался и решил попробовать другие решения. Если у вас возникла идея использовать метод .setData напрямую, решения довольно просты:

  1. определите шаблон где-нибудь в вашем html, например, в теге div или script и скопируйте ваш шаблон с помощью jQuery
  2. , поскольку возможности шаблонов ckeditor весьма ограничены, вы должны отключить jsrender, который является полнофункциональным механизмом шаблонов.

Как только у вас будет нужный HTML-шаблон, просто передайте его .setData.

2 голосов
/ 21 февраля 2011

это работает для меня.

CKEDITOR.replace("newsContent", {
    customConfig : "/ckeditor/config/news.js",
    on:{ instanceReady : function( ev ) { 
           insert = CKEDITOR.getTemplates('your_required_template_name');
           this.setData(insert.templates[0].html);
       }
    },
});
1 голос
/ 07 марта 2015

Зима прав, вы должны сначала загрузить шаблоны, иначе вы получите getTemplates, возвращающие неопределенное значение

Так что-то вроде этого решит проблему:

CKEDITOR.loadTemplates(CKEDITOR.config.templates_files, '');
        var ck = CKEDITOR.replace(elm[0], {               
            on: {
                 instanceReady: function (ev) {                       
                    var insert = CKEDITOR.getTemplates('default');
                    this.setData(insert.templates[0].html);
                }
            }
        });
0 голосов
/ 03 сентября 2014

К вашему сведению, чтобы загрузить шаблоны перед их получением

**CKEDITOR.loadTemplates(CKEDITOR.config.templates_files,'')**
insert = CKEDITOR.getTemplates('default');
editor.setData(insert.templates[11].html);

надеюсь, это кому-нибудь поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...