在這裡先解說一下
一般Joomla內建GeSHi的使用方式
必須先關閉所見即所得,或使用FCK的原始碼模式
因為TinyMCE會把所有""或<>轉換成替代字元導致無法解析
使用方法:
1.0.x 將語法包在
<pre> </pre>中
1.5.x 將與法包在
<pre xml:> </pre>中
(似乎預設就是php了)
指定語言與顯示行號:
1.0.x -
<pre lang="php" lines="true"> </pre>
1.5.x -
<pre xml:lang="php" lines="true"> </pre>
OK 進入正題
如何將改成以[ code ]來顯示呢
請打開:
1.0.x - mambots/content/geshi.php
1.5.x - plugins/content/geshi.php
找到line27 or 28:
if ( JString::strpos( $row->text, 'pre>' ) === false ) {
更改為
if ( JString::strpos( $row->text, 'code]' ) === false ) {
再找line33:(1.0.x)
$regex = "#<pre\s*(.*?)>(.*?)</pre>#s";
更改為
$regex = "#\[code\s*(.*?)](.*?)\[ /code]#s"; //要注意多了兩條反斜線
或是line35:(1.5.x)
$regex = "#<pre xml:\s*(.*?)>(.*?)</pre>#s";
更改為
$regex = "#\[code xml:\s*(.*?)](.*?)\[ /code]#s"; //要注意多了兩條反斜線與'xml:'
OK存檔後輸入
[ code ]語法[ /code ] //1.0
或
[ code xml: ]語法[ /code ] //1.5
試試吧
這樣改的好處是,可以在所見即所得中直接輸入,即使TinyMCE也能顯示正常
因為[ ]不會被修改
但還是有缺點的,lang="php" lines="true"等等參數還是得要用FCK打開原始碼模式才行
因為 "" 會被改掉導致無法解析
解決方法是將想要的參數直接在程式中設定
GeSHi是可以讓您在本身程式碼中輸入參數的,包括行號背景顏色等等
以後再來發一篇較學吧
目前在一般使用上是沒問題,可以不關閉TinyMCE直接顯示出高亮度(但行號不行)
而覺得1.5輸入xml:太麻煩的話,可以自己把程式碼中的xml:拿掉







文章回應