Joomla之门广告招商,PR=5,alexa 排名2万1
English French German Italian Portuguese Russian Spanish

捐款 -> 升级 -> 下载

淘宝捐款升级到高级会员

点击这里给我发消息

Donate to joomlagate.com to translate more Joomla! extensions and free Joomla! templates

下载最新版本 Joomla!

Joomla! CMS - free Joomla! templates
download Joomla! 1.5.15 Chinese version

文章分类阅读

会员登录

 
 
geshibot 使用详解 E-mail
作者:白建鹏   
2007-01-04

Geshibot是一个Joomla的标准触发器(mambot),基于著名的Geshi程序开发。说实话,我一看到Geshi这个名字,老是联想到汉语拼音,怀疑它是不是“葛氏”的意思啊。后来才知道,Geshi 是Generic Syntax Highlighter(通用语法高亮显示)的缩写。呵呵,原来是专门作程序代码嵌入显示的。

用Joomla建站时,难免有些文章中需要插入一段代码,比如像本站的“教程”栏目。凡是涉及修改程序代码的示范,总要把源代码及修改方法清清楚楚地介绍给读者。但是,Joomla本身对插入代码这件事情处理得不够好。在安装Joomla时,可以看到已经内置一个叫做Geshi的触发器,但是功能要弱得多,并且默认是未发布的。

于是“有高人出,发Gehsibot以利万民”,呵呵。

Geshibot是将Geshi这款独立的代码高亮显示程序打包成为标准触发器,并且加入一些新特性。本站已经将它汉化并发布到下载栏目。安装过程与其他触发器相同。安装后在后台进行简单设置并发布此触发器,就能在文章中使用了。

Geshibot的使用语法支持两种标记,即{geshibot}和<pre>。当然,在后台参数设置中,你也可以只选定支持其中一个。

Geshibot显示程序代码的优点有:

    • 显示行号;
    • 可以根据不同计算机语言进行相应高亮方式调整;
    • 支持几乎所有计算机语言,包括常见的BASIC、C、C++、HTML、PHP、ASP、DELPHI等;
    • 可以自定义CSS样式

    在文章中需要插入代码的地方,将你的要展示的代码用{geshibot}代码{/geshibot}或者<pre>代码</pre> 的语法写入即可。

    Geshibot触发器还支持3个标记属性,即 lang或langauge,head或header,foot或footer。第一个属性lang指定该代码所属的计算机语言,以便使用相应的高亮模式;第二个属性head允许在展示代码的区块上边框上显示一个表头;第三个属性foot则允许在展示代码的区块底部边框显示一个自定义的脚注。

    比如,本文下面的代码展示就使用了这样的语法:

    {geshibot lang="css" head="新添代码" foot="本代码由AutoIt友情赠送"}
    代码 ....
    {/geshibot}

    不过,在使用过程中,我发现Geshibot有一个很严重的问题就是不能解决代码语句换行的问题。有时候,一行php代码在屏幕上可能要连续两行才能显示,由于大部分Joomla网站展示文章的宽度并非屏幕全宽,因此导致用Geshibot展示的代码由于无法自动换行而强行拉宽网页,并且使文章跳出mainbody位置而独立显示。这对网站的外观美是一个很大的障碍。

    这个问题困扰了我很久,但是一直没有找到合适的解决方法。我曾经给软件作者写信,但是他也没有什么好招。然而昨天,AutoIt却将这个问题轻易地解决了。

    AutoIt大侠使用的手段很简单:利用CSS来控制Geshi进行换行。方法是,在你的当前网站前台模板的 /css/template_css.css 文件中插入以下代码:

    /* added to make embeded code autowrap according to line length */
    pre {
     white-space: pre-wrap;       /* css-3 */
     white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
     white-space: -pre-wrap;      /* Opera 4-6 */
     white-space: -o-pre-wrap;    /* Opera 7 */
    }
    
    * html pre {
     word-wrap: break-word;       /* Internet Explorer 5.5+ */
     white-space : normal ;       /* Internet Explorer 5.5+ */
    }

    不过有一点要注意:Geshibot后台设置参数中,允许定义选用CSS的来源,一种是“使用Joomla/Mambo CSS”,另一个选项是“使用自定义CSS”。如果选为前者,刚才说的修改方案才能生效。如果选为后者,那么就不能把上述代码插入到网站模板的CSS文件中了,而必须粘贴到Geshibot后台“自定义CSS”的那个输入框里。

    经过试用,AutoIt发明的这个方法果然有效。真是“踏破铁鞋无觅处,得来全不费功夫”,呵呵。在此感谢AutoIt大侠又给Joomla用户带来一件珍贵的礼物。

    当然,Geshi本身还有一个功能就是可以自定义起始行号。这对于讨论程序代码文件非常方便。比如我们要告诉读者修改某文件第147行至153行代码,我们就可以在Geshi中指定代码起始行号为147,那么读者看到的样子应该非常接近原文,而不是现在这样自动从1开始。遗憾的是,这个功能在Geshibot中还没有被实现。我们期待作者能够继续改进这个触发器。