我希望将CKeditor与GeSHi一起使用,但我遇到了一些重大困难。如果我创建一个新的内容,那么,如果我禁用CKeditor,那么我只是编写纯HTML,我可以在<pre> </pre>
标记中包含代码snipptet。如果我然后保存,GeSHi很好地做了它的事情并且片段看起来很好。
然而,如果我然后尝试编辑那段内容,CKeditor会对代码的格式化,特别是用特殊的转义序列替换很多字符,并试图关闭它认为的HTML标签但是实际上C ++包含文件,例如#include <iostream>
将使CKeditor在文本末尾放置</iostream>
。然后,在最好的情况下,我的代码看起来很糟糕。
在其他情况下,行为真的很奇怪:页面不会加载,而是给我一个服务器错误。我认为这是因为,服务器方面,CKeditor对代码片段做出的一些改变正在使GeSHi崩溃,反之亦然。
以下是我在明文编辑器中逐字输入并将其括在<pre>
标记中后看起来正确的示例代码:
// All rights reserved
// Email: firstname.lastname@url.com
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <iostream>
#include <fstream>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
myClass::myClass()
{
m_lthing = NULL;
m_athing = NULL;
m_bthing = NULL;
m_lthingthing = NULL;
m_athingthing = NULL;
m_bthingthing = NULL;
}
然而,只需单击编辑然后再次保存而不进行任何更改会使CKeditor弄乱代码,现在看起来像这样:
// All rights reserved
// Email: firstname.lastname@url.com
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <iostream>
#include <fstream>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
myClass::myClass()
{
m_lthing = NULL;
m_athing = NULL;
m_bthing = NULL;
m_lthingthing = NULL;
m_athingthing = NULL;
m_bthingthing = NULL;
}</fstream></iostream>
有没有人对此有任何想法,或者有人可以推荐一个替代我现在尝试使用的系统的好方法吗?我并不是对CKeditor或GeSHi的超级依恋,虽然到目前为止我对CKeditor一直很满意,而且我喜欢GeSHi做MATLAB格式化的事实。另外,根据下面的回答/评论,我已经尝试了Peter Petrik的方法概述here,并且崩溃的行为仍然发生。
感谢。
答案 0 :(得分:5)
您使用的是哪个版本的Drupal / CKEditor / GeSHi?我将验证输入格式(管理员/设置/过滤器),并确保您使用的格式不会使您的代码与其他过滤器混乱。还要验证允许的HTML标记。
答案 1 :(得分:1)
看看这个 - 它可能会有所帮助ckeditor-and-geshi-filter