Мы рассматривали возможность использования CKEDitor для редактирования шаблонов Smarty. Проблема, с которой мы столкнулись, заключалась в том, что она заменяла все угловые скобки и амперсанды внутри фигурных скобок, что все испортило. Это произошло в поиске Google, поэтому наше решение должно помочь всем, кто сталкивается с подобными проблемами.
CKEditor перестраивает HTML каждый раз, когда вы переключаетесь в режим «Код» и при сохранении, поэтому вам нужно добавить в 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;
}
Функция onText обрабатывает все биты, которых нет в тегах или комментариях.
Я полагаю, что вы можете сделать нечто подобное, изменив приведенный выше код - я оставил все как есть, так как считаю, что наши проблемы и необходимые решения очень похожи.