Были изучены возможности использования CKEDitor для редактирования шаблонов Smarty. Проблема, с которой мы сталкивались, заключалась в том, что она заменяла все угловые скобки и амперсанды в фигурных скобках, что все испортило. Это произошло в поиске Google, поэтому наше решение должно помочь любому, у кого есть подобные проблемы.
CKEditor восстанавливает HTML каждый раз, когда вы переключаетесь в режим Source и при его сохранении, поэтому вам нужно добавить HTML-код http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Data_Processor htmlFilter.
Это работало на нас:
//replace Form_content with whatever your editor's id is.
htmlParser = CKEDITOR.instances.Form_content.dataProcessor.htmlFilter;
//We don't want HTML encoding on smarty tags
//so we need to change things in curly brackets
htmlParser.onText = function(text) {
//find all bits in curly brackets
var matches = text.match(/\{([^}]+)\}/g);
//go through each match and replace the encoded characters
if (matches!=null) {
for (match in matches) {
var replacedString=matches[match];
replacedString = matches[match].replace(/>/g,'>');
replacedString = replacedString.replace(/</g,'<');
replacedString = replacedString.replace(/&/g,'&');
text = text.replace(matches[match],replacedString);
}
}
return text;
}
Функция КОНТЕКСТ обрабатывает все биты, которые не в тегах или комментарии.
Я бы предположил, что вы можете сделать что-то подобное, изменив код выше - я оставил его так, как я думаю, наши проблемы и требуемые решения очень похожи.
Я остановил HTML сущности от преобразования в режиме источника, я хочу это так, когда данные сохраняются за пределами исходного режима не будет преобразовывать сущности. Раньше мы использовали EDITLET, и он не конвертировался, отправленный в режиме WYSIWYG. – Sam