陰錯陽差升級了SyntaxHighlighter 3.0

今天在修改帶有JavaScript程式碼的文章時,發現SyntaxHighlighter Evolved外掛無法正確的轉換 & 與 > 等字元,原本應該是 && 的符號卻變成 &&,>則變成>,使用另一個使用GeSHi的外掛WP-Syntax則正常,開始懷疑會否是SyntaxHighlighter Evolved的問題(最後確認外掛是正確的,詳後說明),剛巧它使用的底層SyntaxHighlighter有推出3.0.83新版,就更新版本看看。只要把新版的scripts與styles資料夾複製到對應的WordPress外掛同名資料夾就可以了。

更新後發現工具列變成一個問號:

2.1版工具列有4個按鈕 3.0版工具列只有1個按鈕
syntaxHighliter-2.1 syntaxHighliter-3.0

由3.0.83的What's new in 3.0?裡看到了幾個使用介面的變動:

  • 複製到剪貼簿的功能變更:以前是透過Flash物件,3.0已取消這種作法,只要在程式碼區域雙擊,就能標示所有的程式碼,再按Ctrl+V就能把標示內容存入剪貼簿
  • 程式碼可以多列標示:以前做多列標示時,行號也會被標示到,3.0已經可以任意做區域標示了
  • 程式碼開頭可以加上一列標題列,當程式碼預設是捲起狀態時,會顯示此標題,點擊即會展開

由於SyntaxHighlighter Evolved只支援到2.1版,因而無法使用smartcode來加入title屬性,我想到的變通方法是不使用smartcode,而直接使用HTML碼:


  //...你的JavaScript程式碼

但只寫這樣是不會在瀏覽的網頁裡插入需要的.js與.css檔,因此再加入下列smartcode讓外掛插入需要的程式碼:

  <!--[code lang="js"][/code]-->

SyntaxHighlighter Evolved遇到[code]就會插入SyntaxHighlighter 3.0.83的.js檔與.css檔到網頁裡。

這樣似乎有點麻煩,不過別的網頁系統可能不會認識smartcode([code]、[sourcecode]、[source]等),直接用<pre>標籤的移植性應該是較高的。或者等SyntaxHighliter Evolved的新版本吧,下一版應該就會支援 title 屬性了。

最後,一開頭提到的錯誤是插入繼續閱讀的外掛Evermore造成的,因為原來的文章未手動加入<!--more-->,系統自動加入的繼續閱讀<span>被插入到程式碼裡的第一個空行,導致「繼續閱讀」標籤插入到程式碼裡,造成SyntaxHighlighter Evolved誤判,在加入<!--more-->到程式碼外面就正常了。哇哩咧~

小備註

問題:[code]的中括號要如何輸入呢?
解答:

ASCII code只要用&#十進號字元碼;就可以了。
[與]的ASCII十進位碼是91和93,因此用&#91;&#93;(此處以全形表示,請轉成半形使用)就可以顯示而不被SyntaxHighlighter Evolved抓去特別處理了。

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *