Firefox 4.0のスクリーンショットらしい
結局うちのFirefoxは、3.5から3.5.1にしても何も変わらなかった。検索窓(Googleツールバーのそれを統合すると)で検索はじめると、どういうタイミングかわからないが、落ちる。相変わらず、起動に時間がかかるし、非常に重い。なので、かなりChromeの使い方に慣れてきた。
携帯Google Mapモジュールのデモをdemo.joomler.netで以前から公開していますが、自分では全く見ていません。先日ふと見てみると「友達に送る」リンククリックで件名が文字化けしているは、URLがURIだし、こりゃ駄目だと。いつの間にそうなったのだろうとふと考えてみるとサーバー移転時にURIの部分を変更しなおしたことを思い出しました。
で、ひとつ間違いを発見。80Codeサーバーでの設定でuri.phpをHackした部分にさらに変更を加えないとだめです。(まあ、考えてみれば当然なのですが今まで不都合なかったので・・・)
$uri =& JURI::getInstance();
パスしか返さないJURI::base()を参照するのはおかしいのでこのように変更しました。
※80Codeサーバーでのみなので他のサーバーでは必要ありません。もしかしたらうちだけかもしれないけど。
・・・でも、これが正解のような気がしないでもない・・・。
件名が文字化けすることは、以前に何度も確認したつもりでDocomoの時だけSJISにするようにしていてOKだったのですが、うちのauでも文字化けするようになってました。(なんでかな・・・)
で、SJISに変換するようにしたらOKでした。
「日本語で9文字以上のユーザー名でユーザー登録すると文字化けする。」と問い合わせがあったので少しHackしてみました。
これは、Joomla!1.0.xの場合です。
これには2つの原因があります。データベースの文字数制限と、ユーザー登録時の文字数制限です。
まず、phpMyAdminでデータベースを開きます。
次にRoot/includes/joomla.phpを開き以下の行を変更します。(2826行目付近)
// check that username is not greater than 25 characters
$username = $this->username;
if ( strlen($username) > 25 ) {
$this->username = substr( $username, 0, 25 );
}
の25の部分をデータベースと同様に51に変更します。
// check that username is not greater than 25 characters
$username = $this->username;
if ( strlen($username) > 51 ) {
$this->username = substr( $username, 0, 51 );
}
以上で日本語17文字のユーザー名まで登録できるようになりました。
今回は、51としましたがお好みで3の倍数になるように変更されても良いのではないでしょうか。
これは、最近気づいたのですがNotepad++
のプラグインがあることを知りませんでした。Notepad++でソースを表示させ、Highlightプラグインをクリックすればそのファイルの場所に指定したフォーマットで出力されます。見た目はNotepad++で表示されたまま出力されます。そういえば、記事の日時がローカルテストサーバーのJoomla!1.0.13でいつも文字化けしていたことを放置していました。
2007/12/07 Friday 08:01:00 ???? (?W????)
こういうの見たことありませんか?
以下を変更してみました。
これは、Windowsサーバーでは発生するようです。プラットホーム依存ぽいです。Ubuntuでは、
2007/12/07 金曜日 08:01:00 JST
などと表示され、正常です。
ROOT/includes/joomla.php
if ( $date && ereg( "([0-9]{4})-([0-9]{2})-([0-9]{2})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $date, $regs ) ) {
$date = mktime( $regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1] );var_dump($date);
$date = $date > -1 ? strftime( $format, $date + ($offset*60*60) ) : '-';
}
return $date;
を
if ( $date && ereg( "([0-9]{4})-([0-9]{2})-([0-9]{2})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $date, $regs ) ) {
$date = mktime( $regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1] );var_dump($date);
$date = $date > -1 ? strftime( $format, $date + ($offset*60*60) ) : '-';
}
return mb_convert_encoding($date, 'UTF-8', 'SJIS');
のように変更してみました。
すると、
2007/12/07 Friday 08:01:00 東京 (標準時)
に変わりました。あれれれれこれって・・・はじめて見る気がするのは私だけでしょうか(いつも表示させていないからか?)・・・
SJISの部分や、行番号(変更したりで)は、環境により異なるかもしれません。
また、表示の仕方を変更したいときや、表示するものを変更したい場合は、
ROOT/language/japanese.php
DEFINE("_DATE_FORMAT_LC","%Y/%m/%d %A %H:%M:%S %Z"); //Uses PHP's strftime Command Format
をたとえば、
DEFINE("_DATE_FORMAT_LC","%Y/%m/%d %A"); //Uses PHP's strftime Command Format
のようにすれば
2007/12/07 Friday
となります。書き方は、http://jp.php.net/strftime
のパラメータ項を参照してください。文字化けな方は、お試しあれ