Joomla!1.5では、英語タイトルなら自動でタイトルを付加したSEF-URLにしてくれるのですが、日本語だと番号だけになってしまいます。真偽は定かではありませんが、日本語でもURLエンコードされたものを使ったURLがSEFとして効果があるらしい。本当かどうかは知りません。
ちなみにどんなURLになるかというと
http://example.com/demo/the-news/1-latest-news/46-%E3%81
%95%E3%81%82%E3%81%A9%E3%81%86%E3%81%A7
%E3%81%97%E3%82%87%E3%81%86
とこんな風に長いURLになるわけです。ブラウザでそのリンクをポイントすると
という風に見えます。
ということでまた、書き換えちゃいました。
Root/libraries/joomla/filter/filteroutput.php
function stringURLSafe($string)
{
$lang =& JFactory::getLanguage();
if($lang->_lang == 'ja-JP'){
$str = strip_tags(html_entity_decode($string));
$length = JString::strlen($str);
if($length > 10){
$str = JString::substr($str, 0, 10);
}
$str = strtolower($str);
$str = rawurlencode($str);
$str = preg_replace('/(%2F|\.|%23|%3F)+/', '', $str);// /, ., #, ?
$str = preg_replace('/(%E3%80%80|%20|%3A)+/', '-', $str);// Full size space, space, :
return $str;
}
//remove any '-' from the string they will be used as concatonater
$str = str_replace('-', ' ', $string);
$str = $lang->transliterate($str);
// remove any duplicate whitespace, and ensure all characters are alphanumeric
$str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);
// lowercase and trim
$str = trim(strtolower($str));
return $str;
}
これだけだと編集するたびにどんどんURLが変わっていきますので次も必要です。
Root/libraries/joomla/database/table/content.php
// if(empty($this->alias)) {
$this->alias = $this->title;
// }
というように絶えずタイトルでエイリアスを初期化します。ただ、一つ大きな問題なのは、もしタイトルを変更した場合URLも変わってしまう点です。ですが、たとえ変わってしまってもリンク切れになるわけでは無いようです。そのまま表示されます。
見た目は悪いですが、それを覆すほどの効果があるなら使いたいですね。
間違ってたらごめんよ~。









たまにリンクが切れているとかサイトが見られないなどとメールが来るのだが、何が原因なのか不明です。もしかするとJavascript?などと考えてみたりもするが、わかりません。リンク切れの多くは、e...