Demo

討論

保持飢餓,保持愚笨 (Stay hungry, stay foolish)。 史蒂夫·賈伯斯

公告

本網站已取消討論區的討論方式,如果您有問題請至LINE群行動條碼圖片網址,或Facebook社團

Joomla!標題別名轉換成為中文的問題?

  • jade
  • jade 的個人頭像 Topic Author
  • 訪客
  • 訪客
2008-08-13 10:30 #10866 來自 jade
jade created the topic: Joomla!標題別名轉換成為中文的問題?
這裡有個文章說如何把Joomla!空的標題別名轉換為中文拼音,但是試過了好像用不了!
http://www.cnmos.cn/code/component/4961-joomlazhongjiangkongdebiaotibiemingzhuanhuanweihanyupinyin

其實要說的就是Joomla!的標題和別名轉換的問題,
1.標題是純中文,別名自動轉換為日期形式!
2.標題是中英文混合的,別名自動轉換為其中某些英文!

那有沒有可能標題是純中文,別名也是純中文的了?其實Joomla!的別名其實就等於一個網頁的文件/文檔名,但是Joomla!1.5x不會自動識別中文名稱!雖然現在可以把別名轉換為中文拼音,但是希望可以別名也可以自動轉換成為中文,不知道有沒有達人可以修改出來?

這個就是一個把別名也做成中文的例子,[url]好像phpBB也不支持url之間的中文[/url]!
http://ismybestchoice.com/joomla/index.php/component/content/article/128-tongtong/396-可爱迷人小龙女彤彤
http://ismybestchoice.com/joomla/index.php/component/content/article/128-tongtong/396-可爱迷人小龙女彤彤
在Mysql jos_content裡面,有 title 和 alias,其中alias就代表別名了!當然Mysql是支持中文的,只是Joomla!不直接轉換過來!

Please 登入 to join the conversation.

More
2008-08-20 03:40 #10957 來自 kochin
kochin replied the topic: Joomla!標題別名轉換成為中文的問題?
在 <!-- l --><a class="postlink-local" href="http://www.joomla.org.tw/phpbb3/viewtopic.php?f=39&t=2901#p9217">viewtopic.php?f=39&t=2901#p9217<!-- l --> 曾經討論過類似的問題。

Please 登入 to join the conversation.

  • jade
  • jade 的個人頭像 Topic Author
  • 訪客
  • 訪客
2008-08-21 07:11 #10973 來自 jade
jade replied the topic: Joomla!標題別名轉換成為中文的問題?
試過了,全部的中文別名自動轉換成為 ???(問號),可能那個方法用不了在1.56版本裡面!

Please 登入 to join the conversation.

More
2008-08-21 23:24 #10985 來自 kochin
kochin replied the topic: Joomla!標題別名轉換成為中文的問題?
奇怪?我自己用在 1.56 上沒有問題。請見我的 測試站

Please 登入 to join the conversation.

  • jade
  • jade 的個人頭像 Topic Author
  • 訪客
  • 訪客
2008-08-22 00:22 #10987 來自 jade
jade replied the topic: Joomla!標題別名轉換成為中文的問題?
kochin 大將軍能不能用中文寫寫你那個帖子的內容原理啊,Google翻譯有些不準確啊!

Please 登入 to join the conversation.

More
2008-08-22 04:07 #10989 來自 kochin
kochin replied the topic: Joomla!標題別名轉換成為中文的問題?
抱歉,太懶了所以沒用中文詳細解釋。

Joomla! 的連結其實是用 Alias 欄位。然而這 Alias 欄位並不一定是你輸入的文字或由 Title 欄位複製過來,它是經過轉換的結果。不幸的是,這轉換過程把 Alias 欄位變成只有英文、數字與破折號。

當你儲存一篇文章、單元、分類或選單時,Joomla! 把 Alias 欄位(可能是由 Title 欄位複製過來)送交給 JFilterOutput::stringURLSafe() 處理。而 stringURLSafe() 函式則把這字串餵給 JLanguage::transliterate(),在那裏用上函式 utf8_decode(),然後 htmlentities()。接下來字串中所有奇怪的字元(對英文語系的人來說)都以正常的字元取代。中文或日文字無法經過這些折磨還存活。但是字串還要經過更多的處理。

回到 stringURLSafe(),所有的空白字元及非文數字符號被以破折號取代或被移除。任何中文或日文字都從字串中消失了。並且故事還未結束。

因為在經過了這些虐待後字串極可能只剩下破折號或完全空白,函式 check() (在幾個地方出現)在叫用 stringURLSafe() 後,最後把只剩下破折號或完全空白的字串用時間戳記來取代。

如果要使用中文的連結(也就是在 Alias 欄位裏用中文),需要修改兩個檔案。首先修改 libraries/joomla/filter/filteroutput.php 中的 stringURLSafe() 函式,把其中的
$str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);
改成
$str = preg_replace(array('/\s+/', '/\./'), array('-', '_'), $str);
接下來修改 libraries/joomla/language/language.php,把
$string = htmlentities(utf8_decode($string));
改成
$string = htmlentities($string, ENT_COMPAT, 'UTF-8');
個人在 Joomla! 1.5.x 上只做過簡單測試,目前還都正常。

Please 登入 to join the conversation.

  • jade
  • jade 的個人頭像 Topic Author
  • 訪客
  • 訪客
2008-08-23 12:51 #11006 來自 jade
jade replied the topic: Joomla!標題別名轉換成為中文的問題?
可以了,之前沒把這兩行刪除掉,所以轉換不了,現在可以了。
//$str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);
//$string = htmlentities(utf8_decode($string));

另外提議Joomla!的中文網站都使用這兩個kochin和hoping屬於中文專用的hack,除非你喜歡使用英文別名或者日期的形式。

hoping的別名自動轉換拼音的方法就是打開
/libraries/joomla/database/table/content.php
找到
if(empty($this->alias)) {
$this->alias = $this->title;
 }
替換成為
if(empty($this->alias)) {
include_once(JPATH_ROOT."/includes/Chinese.class.php");
$cht = new Chinese('UTF-8', 'PINYIN');
$this->alias = $cht->convert($this->title);
//$this->alias = $this->title;
 }
Chinese.class.php 可以到hoping的網站下載。kochin和hoping的方法一個是直接使用中文別名,另外的是轉換成為拼音別名,喜歡使用哪個隨便你的喜歡了,現在還不知道Google對哪個SEF支持比較好一些!合理的做法是,沒填寫別名的時候自動轉換成為拼音格式,填寫了別名的時候就使用中文的形式。

如果不使用上面兩個中文hack的辦法,當你開啟某些SEF功能的時候可能會出錯,例如:
1.標題:Joomla 2008 教程,標準J的別名,joomla-2008,顯示形式是(id1)-joomla-2008
2.標題:Joomla 教程 2008,標準J的別名,joomla-2008,顯示形式是(id2)-joomla-2008
這個時候當然沒問題了,但是如果開啟某些SEF程式功能的時候,(id1)和(id2)是不會出現的,所以兩個文章顯示的都是 joomla-2008 ,這樣就會出錯了,所以說J的標準 別名/Alias 不適合於中文的網站!如果各位達人不同意的,可以說說你的意見!

Please 登入 to join the conversation.