Skip to content

SyntaxHighlighter插件无法识别pre的解决方法

SyntaxHighlighter 是 Alex Gorbatchev 2004年开始开发的一个Javascript web客户端代码高亮库。之前的主页在google code,现在已经转移到了alexgorbatchev.com。当前最新的版本是3.0.83,兼容的浏览器有:Internet Explorer 7.0  / Mozilla Firefox 3.0 /  Google Chrome 0.2  / Safari 3.1 /  Opera 9.6,IE6并不被支持。1.x的版本应该是支持的。 对于一个技术博客来说这样的代码高亮库肯定是必不可少的。wordpress上安装syntaxhighlighter非常简单,直接在插件里面搜索后安装即可。安装后就可以使用了,非常简单。

js
<!-- You also need to add some content to highlight, but that is covered elsewhere. -->
function foo()
{
}

这种方法行不通,不知道怎么回事。还有一种方法。

js
alert("hello world!");

这一咱方法在前台可以看到代码高亮,但是在tinyMCE编辑器下会把缩进的空格给处理掉,真是个杯具的事情。

于是,又只有用pre的方式了,下载另一个插件 sh TinyMCE button 这个会有个编辑框,里面粘贴进去代码会会插入到编辑器里,经过对其的小小的修改。当然了,这个方法是有点笨,不过对于一个对php 以及wordpress插件编程非常不了解的人来说,达到了目的。修改tinymce.js里面的一方法(insertSHTBADVCODEBOXcode();):

php
tinyMCEPopup.editor.execCommand('mceInsertContent', false, tagtext+classAttribs+'"<'+html+'</pre><div style="display:none;">['+langname+'] [/'+    langname+']</div>');

加入一个隐藏的div,这里面有[ ] 这种东西,插件会自动添加处理js来处理的。

其实更好的方法是修改这个插件,比如这个函数:

php
function parse_shortcodes( $content ) {
	global $shortcode_tags;
	
	$shortcode_tags_org = $shortcode_tags;
	remove_all_shortcodes();
	
	$this-&gt;add_shortcodes();
	$content = do_shortcode( $content );
	
	$shortcode_tags = $shortcode_tags_org;
}

今天就先研究到此吧,以后再做研究。