Drupal:尝试将GeSHi与CKeditor一起使用

时间:2011-02-24 04:20:56

标签: drupal syntax-highlighting ckeditor geshi

我希望将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 &quot;stdafx.h&quot;
#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,并且崩溃的行为仍然发生。

感谢。

2 个答案:

答案 0 :(得分:5)

您使用的是哪个版本的Drupal / CKEditor / GeSHi?我将验证输入格式(管理员/设置/过滤器),并确保您使用的格式不会使您的代码与其他过滤器混乱。还要验证允许的HTML标记。

答案 1 :(得分:1)

看看这个 - 它可能会有所帮助ckeditor-and-geshi-filter