EditorMonkey修复与完善

写Blog时有一个好的编辑器会有一份好心情。WP默认编辑器把<pre>中的&nbsp;都吃掉,实在是霸道。Zoundry的编辑器也不成熟,我就暂时放弃了离线编辑。

近来一直在用EditorMonkey写Blog,感觉比起WP默认的编辑器来要好得多。当然我选择的是FCKEditor,tinyMCE已经删 除了,它占了很大的空间,而且有大量的语言文件,查看源代码时全放在一行中:(。不过EditorMonkey的作者在集成FCKEditor的时候没有能够解决<!–more –>和<!–nextpage–>两个标记的插入问题。在他的论坛里问的时候他说由于FCKEditor太难搞了,以后也不会再 支持它了。

我在那个thread上订了E-Mail通知,最近发现Cougar解决了这个问题,在他的一篇日志中:EditMonkey 2.5 Patched Version,日志里有patch过的下载链接。

最初装上的时候觉得还有很多问题,后来证明都是我对XHTML的不了解。唯一发现的错误是如果文章中有图片,就不能显示源代码了,不过这已经被修正。在他的文章里提到<!–more–>和<!–nextpage–>标记的支持至少和原来的WP默认tinyMCE一样好了。如果使用的是Windows下的Firefox,可能换了之后还是不能使用可视化编辑器来插入这两个标记,因为Firefox的缓存机制有些问题吧。直接在浏览器中打开fckeditor\editor\plugins\wordpress\fckplugin.js文件并刷新就可以了。

当然我是不喜欢用这两个标记,呵呵,只是Bright Young曾经问我怎么点那个按钮什么效果都没有(Firefox中源代码中是插入标签的,而IE中则是完全无效),现在你方便了:)。接下来就说说怎么排版文章好让发表出去的日志符合Web标准吧,针对Cougar修改过的FCKEditor。

  1. 段落:FCKEditor在你回车的时候并不会把刚写的一段用<p></p>标记包起来,这与tinyMCE不同。Cougar的patch把<br/>全去掉了,所以发表的日志就只有一个段落。正确的做法是为每个段落在格式下拉框里选择“普通”,在回车几次后新的段落就自动包含在<p></p>标记中了,自己体会吧。
  2. 代码:粘贴代码时,不要仅仅用<code>标记wrap。<code>实际是<span class="Code">,其中的<br/>会被剔除,因此发表后只有一行了。应该在外面用<pre>标记wrap起来。
  3. 编辑框的样式表:通过修改fckeditor\editor\css\fck_editorarea.css文件可以控制编辑区域元素的样式,例如图片样式等。同样在Windows中的Firefox里,最好手动刷新这个文件。
  4. 插入图片:在XHTML中<img>标记必须有alt属性,所以插入图片时最好加上它(插入图片对话框的“替换文本”),图片不能显示的时候可以显示文字。另外,同样根据XHTML标准,不要使用border/align等属性,而把相关样式放在CSS文件中,在插入图片的对话框中,高级页里的样式类名称中填上它应属的class。我的CSS相关设置(从themes/my theme/style.css中抽取):
    .img-right {
        float: right;
        margin: 5px 0px 5px 5px;
    }
    .img-left {
        float: left;
        margin: 5px 5px 5px 0px;
    }

    这样,插入图片时在样式类名称中填上img-right或img-left就可以使图片靠右或靠左了。而FCK的样式下拉列表中有"image on left"和"image on right",是给<img>加align属性,不建议使用。但这样的话,编辑的时候并不显示图片的停靠,解决办法很简单,照第3点讲的,把这CSS代码复制一份到fck_editorarea.css中去。

  5. 最后:FCKEditor/tinyMCE的对话框都是Javascript弹出窗口。某些Firefox用户(比方我)使用了tab浏览插件的单进程功能,从而对话框在新标签页中打开,把整个窗口缩小,很难受。如果不想这样还是取消单窗口模式,并对javascript弹出窗口设置为允许所有窗口。

现在我最想要的功能就是像Twilight-Autosave那样的自动保存功能,这个插件在EditorMonkey中不再起作用,我也看不明白,似乎要FCKEditor中的API才能取得textarea内容。

Happy editing, happy blogging.

Leave a comment

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.