如何从插件中插入CKEditor中的PHP代码?

时间:2014-08-20 12:12:45

标签: php drupal drupal-7 escaping ckeditor

我正在使用Drupal 7和CKEditor模块用于WYSIWYG textarea。我需要以完整HTML文本格式插入像<?php echo "Hello World!"; ?>这样的PHP代码,不需要在WYSIWYG模式下查看Hello World,但它必须处于源模式。

配置文件sites\all\modules\contrib\ckeditor\ckeditor.config.js包含config.protectedSource.push(/<\?[\s\S]*?\?>/g); // PHP Code行,而完整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()的{​​{1}},则结果为(请注意code.setText()<已转义):

>

如何在CKEditor工具栏按钮中插入PHP代码?

1 个答案:

答案 0 :(得分:-1)

解决方案非常简单。只需更改insertElement功能的insertHtml功能:

editor.addCommand('phpcode', {
    exec : function() {
        editor.insertHtml('<div id="phpcode"><?php echo "Hewllo World"; ?></div>');
    }
});