|
  
- 帖子
- 163
- 精华
- 1
- 威望
- 788
- 金钱
- 0
- 石币
- 0
- 阅读权限
- 200
|
楼主
发表于 2010-1-6 21:20
| 只看该作者
joomla geshi语法高亮器详解(转帖)
作者:MyFreeway
本站的功能正在一步一步争强中,昨天搞完了相关文章,今天搞定了geshi语法高亮器,现把心得share一下。如有错误请指教。 首先明确一些事情:
1.joomla自带的geshi plugin是简化版的,只支持10种代码,想要全支持的去geshi的官网下载最新的,具体后面说。
2.据说默认的joomla编辑器不支持geshi,编辑器会把geshi专用的pre标签的属性去掉,本人没有验证,我用的FCK。
3.geshi插件的调用过程是:显示文章的时候触发一个事件,然后去/plugins/content/geshi.php处理文章内容,这个文件马上加载/libraries/geshi/geshi.php,而这个文件根据文章中指定的代码类型,再调用/libraries/geshi/geshi里的相关语法高亮库,最终完成解析并输出html替换原来的<pre>标签。
4.自动换行和行号是否显示在/plugins/content/geshi.php里控制,后台没有参数给你输
显示行号:
$lines = JArrayHelper::getValue( $args, 'lines', 'true' ); //true表示显示,false是默认的,不显示。
自动换行:
if ($lines == 'true') {//大家从这个逻辑看就知道在那里控制是否显示行号了
$geshi->enable_line_numbers( GESHI_NORMAL_LINE_NUMBERS );
}
$geshi->set_header_type(GESHI_HEADER_DIV);//加上这一句,默认是没有的,就是不自动折行
$text = $geshi->parse_code();
return $text;
}
5.怎么正常显示显示代码里的中文?
在/libraries/geshi/geshi.php里搜索encoding,找到var $encoding = 'ISO-8859-1';,改为var $encoding = 'utf-8';,这是从一位大侠那看来的,不过我自己测试时,改和不改都能显示中文,不知道为什么,不过我还是觉得改为上策,大家都用utf-8比较好。
好了现在开始升级到最全语法高亮器,从sourceforge.net/project/showfiles.php下载最新版,解压后目录机构是这样的
[.] [contrib] [geshi] [..] [docs] geshi.php
geshi目录是:
[.] css.php latex.php reg.php
[..] c_mac.php lisp.php robots.php
.php.php.swp d.php lua.php ruby.php
abap.php delphi.php m68k.php sas.php
actionscript.php diff.php matlab.php scheme.php
ada.php div.php mirc.php sdlbasic.php
apache.php dos.php mpasm.php smalltalk.php
applescript.php dot.php mysql.php smarty.php
asm.php eiffel.php nsis.php sql.php
asp.php fortran.php objc.php tcl.php
autoit.php freebasic.php ocaml-brief.php text.php
bash.php genero.php ocaml.php thinbasic.php
blitzbasic.php gml.php oobas.php tsql.php
bnf.php groovy.php oracle8.php vb.php
c.php haskell.php pascal.php vbnet.php
caddcl.php html4strict.php per.php vhdl.php
cadlisp.php idl.php perl.php visualfoxpro.php
cfdg.php ini.php php-brief.php winbatch.php
cfm.php inno.php php.php xml.php
cpp-qt.php io.php plsql.php xpp.php
cpp.php java.php python.php z80.php
csharp.php java5.php qbasic.php
css-gen.cfg javascript.php rails.php
88 个文件 1,062,448 字节
2 个目录 754,372,608 可用字节
看到这些文件名了吗?支持88个种高亮,太伟大了!到时候我们会用到他们的文件名。
把解压出来的覆盖libraries/geshi/下的文件。
覆盖完之后改编码成utf-8,完成第一步。
接着配置自动换行和行号,完成第二步。
最后调整编辑器,不要用jmc,本人用的fck,然后新建文章了。
1.在可视化模式下把代码贴进来。
2.转到源码模式,在代码前后加上geshi的标签<pre xml:lang="php">你的代码</pre>,根据你的需要,你的是什么语言就把php换成什么,换成什么呢?上上面贴出的geshi目录下的文件名,找到你的语言。比如C#就是是<pre xml:lang="csharp">你的代码</pre>,ini文件内容就是<pre xml:lang="ini">你的代码</pre>
3.好了,赶紧清空缓存,浏览吧。 |
|