2012年7月10日 星期二

在 Sublime Text 2 上,啟用 Smarty 語法高亮。



在 Sublime 中,貌似沒有簡單的方式(例如安裝Package或調改setting)能夠啟用 PHP-Smarty 語法高亮;爬了谷歌大神之後,在官方論壇中發現了一點線索
具體作法 (Windows 7):

1. 打開 Package 所在目錄。

Package所在目錄

2. 找到 Packages\HTML\HTML.tmLanguage 檔案

Packages\HTML\HTML.tmLanguage

3. 搜尋 <!-- 字元,你應該會發現有兩處與 Smarty 相關的代碼被註解起來了,解放它們。

4. 下載 Smarty.plist 檔案 (副本)。

5. 變更**副檔名**為 tmLanguage

6. 將 Smarty.tmLanguage 檔案放置到 Sublime text 的 package 目錄中,例如Packages\Smarty\Smarty.tmLanguage

Packages\Smarty\Smarty.tmLanguage

7. 或許預設的 coloru-scheme 不支持 Smarty,所以你可以試試看其它的 Scheme,例如Tomorrow Colour-Scheme

Packages\Smarty\Smarty.tmLanguage
Packages\Smarty\Smarty.tmLanguage
ps:(在預設安裝的 Sublime Text 2 中,你應該只需要以下幾個步驟,就能啟用 Smarty 語法高亮。)

2012年7月2日 星期一

解決 Codeigniter 的 display_override hook 與 Disucz X2.5 衝突

為了能夠在 CI 中,取得 Discuz $_G 這個超級變數,我把 /source/class/class_core.php 直接載入了 CI 作為一個 Librarries。

在 CodeIgniter 中整合 Discuz X2.5, 引用超級變數 $_G 來獲取用戶名, uid等資訊.


但由於 Discuz X2.5 有自己的一套 input、output 機制,導致於我為 CI 所撰寫的  $hook['display_override']  會沒有反應。


這是因為 discuz 把 ob_start 設為 NULL 了,使得 $CI->output->get_output() 取不到半點字串。

為了讓它能夠正常運作,採用了一個較直接的思路:
「如果目前沒有瀏覽著論壇,則不呼叫 disucz 的 _init_output 方法」

if strpos($_SERVER['REQUEST_URI']'bbs'$this->is_in_bbs false;
...
if ($this->is_in_bbs$this->_init_output();

再觀察看看有沒有其它問題...