2009年1月23日 星期五

修改J! 1.5搜尋字元最少2個字元限制

中文字常常在搜尋時,會用到2個字元的組合來搜尋,這時候Joomla! 1.5的2個字元不能搜尋的限制就很令人討厭。這個修改是修改2個字的中文就可以進行搜尋。

找到以下的檔案
/administrator/components/com_search/helpers/search.php
在69行左右
if ( $searchword && JString::strlen( $searchword )<3 )

改成
if ( $searchword && JString::strlen( $searchword ) <2 )
就可以了。

如果錯誤訊息(中文翻譯檔)也改一下就更完美了
找到以下的檔案
/language/zh-TW/zh-TW.com_search.ini
在第21行左右
SEARCH_MESSAGE=搜尋字詞最少3個字元, 最多20個字元

改成
SEARCH_MESSAGE=搜尋字詞最少2個字元, 最多20個字元

解決IE6/Google Chrome使用J! 1.5無法搜尋中文問題

在IE6(Internet Explorer 6)中,當使用搜尋功能時(例如搜尋「中文字」,網址會變成如下,UTF-8的「中文字」轉成「銝剜?摮」,然後無法進行搜尋的功能。

在Firefox 3.0.5中是可以正常進行搜尋功能,Firefox會自動轉碼:
http://www.joomla.org.tw/component/search/%E4%B8%AD%E6%96%87%E5%AD%97/?ordering=newest&searchphrase=all

在IE7中是可以正常進行搜尋功能,IE7不會自動轉碼,但還是正常:
http://www.joomla.org.tw/component/search/中文字/?ordering=&searchphrase=all

Google Chrome的搜尋也會出錯

http://www.joomla.org.tw/component/search/%E4%B8%AD%E6?%E5%AD??ordering=newest&searchphrase=all

解決之法:

修改/libraries/joomla/environment/uri.php的第347行左右的toString函式


$uri .= in_array('query', $parts) ? (!empty ($query) ? '?'.$query : '') : '';

之前加入

$query=str_replace("%2F", "/", urlencode($query));
$query=str_replace("%3D", "=", $query);
$query=str_replace("%26", "&", $query);


目的是讓$query的字串如果出現中文時,會先作urlencode,這樣在IE6或Google Chrome中的中文搜尋都可以正常運作了。

加速Joomla! 1.5後台管理區

TurboGearsForJoomla1.5.x是一個利用Google Gear來加速Joomla! 1.5後台的外掛,要使用這個外掛,可以依照外掛(Plug-in)的方式安裝這個下載來的套件,不過要先在電腦裡安裝Google Gear ,這樣瀏覽器才會下載這後台管理區的資源檔案,另外要確定你的Joomla! 1.5是安裝在PHP5之下。在安裝完外掛後要啟動它,在右上方會出現「Update Gears」的連結,按下後就會下載資源檔,之後進入管理區後就會加速了。