其實,這也不是個問題…照常理推,因為osTube是外國人寫的,沒理由請他們把中文(正體/簡體)都放進去考量,但事實上,依「Clean URLs」的想法去想,其實原來他們會把標題放在link的後面,也不符合所謂的「簡短網址」的概念吧,因為,很多媒體我們的標題會打的很長…
反正,這不重要,因為看過osTube的.htaccess發現,若以「http://web-site-url/video/video-index/video-subject」格式來看,其實,mod_rewrite只做「/video/video-index/」的解析,後面的video-subject根本就可有可無,只是給人看的而已
所以,如果有人覺得video-subject的部份中文(正體/簡體)變成減號("-")很讓人不爽的話…在version 2.5(之前的版本我忘了)在ostube根目錄下有一個includes資料匣,開啟includes中的function.seo.php
在function seo_chars($item){
/*
$item = str_replace("/", "-", $item);
$item = str_replace(" ", "-", $item);
$item = str_replace("?", "-", $item);
$item = str_replace("=", "-", $item);
$item = str_replace("!", "-", $item);
$item = str_replace("*", "-", $item);
$item = str_replace("'", "-", $item);
$item = str_replace('"', "-", $item);
*/
//$item = preg_replace("#[^a-zA-Z0-9_-]#msi", "-", $item); <------註解這一行,改寫下一行
$item = preg_replace("/ /", "_", $item);//把title中的半形空格,用半形底線來取代
return strtolower($item);
}
preg_replace(pattern, replace_str, source_str)
preg_replace的使用
pattern是條件式,支援regex文字表示法,型態:文字
replace_str是用什麼來取代符合pattern條件的,型態:文字
source_str是來源文字
用了之後,先確定後台組態設定那是否有把Clean URLs(簡短網址)給開啟,有的話就可以回到前台來看看各媒體的列表,應該就會發現原先是減號("-")的就會是正常的顯示方式,只不過,我的規則是把標題中有半型空格的改用底線來取代
===
如果有人覺得怕改了function seo_chars()會造成其他也使用seo_chars()會產生問題的話,那ok,你也可以選擇性的更動
例:
假設我只想要媒體(像video/music...之類)的link中的中文可以正常顯示,一樣開啟function.seo.php
一開始的seo_chars() 可以不用去改,接著,找到
function seo_media_link($mid = NULL, $mkey = NULL, $type = NULL, $mtitle = NULL, $htmlEscape = true){
global $dbconn, $main;
if($mkey == NULL){
$all = $dbconn -> return_query("SELECT media_title,
media_key,
media_id,
media_type
FROM " . $dbconn -> getTable("media") . "
WHERE media_id='". $dbconn -> escape($mid) ."'", "alias");
$mkey = $all["media_key"];
$mid = $all["media_id"];
$type = $all["media_type"];
$mtitle = $all["media_title"];
}
elseif($mid == NULL){
$all = $dbconn -> return_query("SELECT media_title,
media_key,
media_id,
media_type
FROM " . $dbconn -> getTable("media") . "
WHERE media_key='". $dbconn -> escape($mkey) ."'", "alias");
$mid = $all["media_id"];
$mkey = $all["media_key"];
$type = $all["media_type"];
$mtitle = $all["media_title"];
}
$seo = $main->getConfig('clean_urls', 0);
if($seo){
//return url($type . "/" . $mid ."/" . seo_chars($mtitle)); <----註解這一行,改用底下
return url($type . "/" . $mid ."/" . preg_replace("/ /", "_", $mtitle));//一樣的道理
}
else {
return url("mediadetails.php?key=" . $mkey . (($htmlEscape) ? '&' : '&') ."title=" . urlencode($mtitle));
}
}
沒有留言:
張貼留言