ページのソースを表示してdescription部分を見るとそのページで開いている最後(一番下)の記事のdescriptionが、最初に表示される。これは、Joomla!のヘッドタグに追加するメソッドが後からの分を登録済みのものの前に追加するように書かれているからです。
そこで変更してみました。
Root/includes/joomla.php
$this->_head['meta'][$i][1] = $content . ', ' . $this->_head['meta'][$i][1];
を
$this->_head['meta'][$i][1] = $this->_head['meta'][$i][1]. ', '. $content;
として後から追加されるものは登録済みのものの後に追加するようにしてみました。これで最新のものが先に来るはずです。というより並び順の最初のものと言った方が良いのかな。
と、Joomla!1.5はどうかと気になったので確認してみましたが、記事単体を表示した状態でないとdescriptionに反映されない? ブログレイアウトのように複数の記事の場合は、サイトのdescriptionのみが表示されるようですね。
「日本語で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の倍数になるように変更されても良いのではないでしょうか。
そういえば、記事の日時がローカルテストサーバーの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のパラメータ項を参照してください。
文字化けな方は、お試しあれ
phpDesignerは、Zendで動きが鈍い時に使用したりしていますが、先日joomla.phpを開いて書き加えたものをアンドゥして上書き保存したら・・・あらあら、joomla.php内の日本語全部文字化け。一般設定は、ちゃんとUTF-8にしてあるのに・・・。今回は何も変更していないので元ファイルを上書きして解決ですが、そのままアップロードしてたらと思うと・・・。
どうもファイルを読み込みするときに最初は自動判定しているようです。前からそうだったかと思い返しましたが、以前のバージョンでは感じたことがなかったような気がします。joomla.phpのように何千行もあるファイルでしかも日本語がずっと後にあるようなファイルは、全部ANSIで読み込まれるようです。
対策:joomla.phpの最初のコメントアウトされている部分に日本語で何かを書き加える。これで、ただしくUTF-8で読み込まれます。ただ、utf-8って書いてあるxmlファイルまでANSIなんですよね。日本語専用ならインストーラー(xmlファイル)に日本語いれますけど、だめですよね。xmlファイルだけは、ファイルを開いた後でエンコーディングを変更しています。
他の文字コードの違うCMSを使っていたり、初めてCMSを使う方でJoomla!を使用するときエラーが出たり、動かないって困ったことはないでしょうか。私は、今でもエディタによってはデフォルトの保存フォーマットが、Shift-jisだったり、iso-8859-1だったり、へたをするとエディタの設定を間違えていてUTF-16だったりで「なぜ、動かないの?」と、たまに時間を無駄に過ごす時があります。
文字数カットやワードラップによる文字化け...