2014-08-20 2 views
0

Я использую Drupal 7 и модуль CKEditor для текстового поля WYSIWYG. Мне нужно вставить PHP-код, например <?php echo "Hello World!"; ?>, в текстовом формате Full HTML, не нужно видеть Hello World в режиме WYSIWYG, но он должен быть в исходном режиме.Как я могу вставить PHP-код в CKEditor из плагина?

В файле конфигурации sites\all\modules\contrib\ckeditor\ckeditor.config.js есть строка config.protectedSource.push(/<\?[\s\S]*?\?>/g); // PHP Code, а в текстовом формате Full HTML есть PHP evalutaor.

Итак, если я пишу <?php echo "Hello World!"; ?> в исходном режиме он отлично работает.

Теперь я хочу добавить кнопку на панели инструментов CKEditor, чтобы добавить следующий код при нажатии кнопки: <div id="phpcode"><?php echo "Hello World!"; ?></div>.

код в моем plugin.js является:

editor.addCommand('phpcode', { 
    exec : function() { 
     code = editor.document.createElement('div'); 
     code.setAttribute('id', 'phpcode'); 
     code.setHtml('<?php echo "Hewllo World"; ?>'); 
     editor.insertElement(code); 
    } 
}); 

Но результат (Обратите внимание, что <?php и ?> прокомментированы.):

<div id="phpcode"><!--?php echo "Hewllo World"; ?--></div> 

Если я изменю code.setHtml() для code.setText() результата (Обратите внимание, что сбрасываются < и >):

<div id="phpcode">&lt;?php echo "Hewllo World"; ?&gt;</div> 

Как вставить код PHP, нажав кнопку на панели инструментов CKEditor?

ответ

-1

Решение так просто. Просто измените функцию insertElement для функции insertHtml:

editor.addCommand('phpcode', { 
    exec : function() { 
     editor.insertHtml('<div id="phpcode"><?php echo "Hewllo World"; ?></div>'); 
    } 
}); 
Смежные вопросы