日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

<< 過去

未来 >>

大改造の裏の小改造

変わったんだけど、なんか見た目がかわらなくて、親しみやすくていいですね。
というのは毎日このページとにらめっこしてた人だからかな。
さて、今日の裏話をしようか。
まず、Internet Explorerでカウントが回らない件は今日気付いた。もしかするとphp.iniの変更が原因かも。
なぜかよくわからないのでCompanionJSとMicrosoft Script Debuggerを導入してみた。
それで程なく原因はわかった。意味不明なエラーコードC00CE56Eのエラーが出てると。
それを正しく理解するまでは時間がかかったが、それを理解してからは早かった。
はて、どうしたものか。Google検索したところこれの示す意味は
「指定したエンコードはシステムでサポートされていません。」
らしい。まぁしかし意味不明だ。
ただ解決するためにはそのカウンターのPHPの結果のヘッダーにcharsetを指定すればいいと。
  header("Content-type: text/plain; charset=UTF-8");
これで解決した。Shift_JISでも問題ないな。
今回このファイルはASCIIの範囲内なのでEUC-KRと書いても、ISO-8859-1でもいい。
事実、解決例はISO-8859-1となってた。けど気持ち悪いので。
さて、2つ目はrss.phpのこと。
実はBlognplusのRSSは?mode=rssを使うんです。
だけど、今までのRSS設定を変えないで済む方がいいです。RSSだけは変えないで済ませたい。
そう考えて、rss.phpを起こしました。まず2つincludeを書く。
include("./conf.php");
include("./common.php");
その上でblogn_rss_view関数の中身を抜き出して、$userをfalseに置換。
それでblogn_change_url関数をコピー、以上。と結論は簡単です。
そこまで行き着くまでいろいろあったのですが…
さて、しかしこのRSSは相対パスの解決が悪い。なので部で使うときblogn_change_url関数を改めました。
/* 相対パス → 絶対パス変換 */
function blogn_change_url($matches) {
if ($matches[1] == "<a href=\"") { $endtag = ">"; }
else { $endtag = " />"; }
$url = absolute_url($matches[2]);
return $matches[1].$url.$matches[3].$endtag;
}
function absolute_url($in){
$base1 = preg_replace("{^(https?://[^/]*)(/.*?)$}","$1",BLOGN_HOMELINK);
$base2 = preg_replace("{^(https?://[^/]*)(/.*?)$}","$2",BLOGN_HOMELINK);
if(preg_match("{^(http|https|ftp)://}" , $in)){ return $in; exit; }
if(preg_match("{^/}" , $in)){ return $base1.$in; exit; }
while( TRUE ){
$in0 = $in;
$in = preg_replace("{^\.\.(/(.*))?$}","$2",$in);
if($in != $in0){
$base2 = preg_replace("{^/[^/]+/}","/",$base2);
continue;
}
$in = preg_replace("{^\.(/(.*))?$}","$2",$in);
if($in == $in0) break;
}
return $base1.$base2.$in;
}
長い…まぁこんな風にしたわけです。
これが絶対正解と言い切れないのですが、僕の趣味の悪い相対パスの記述をほぼ理解したのでいいでしょう。
そうそう、ついでに、他のBlognplusの使いにくいと思った部分の改造も書いておきます。
まず1つはちょっと深刻な問題。文字実体参照の<>&を書いても元の文字に戻ってしまう問題。
これ実は深刻で。「<br>を使いなさい」などというのもうまく解釈しないというわけ。
index.phpとadmin.phpの下2行それぞれの記述をすべて削除。
$mes = blogn_html_tag_restore($mes);
$more = blogn_html_tag_restore($more);
どちらも正直無駄な動作です。
もう1つは、br要素にまつわる問題。Blognplusは表示時、<br />(内部ではこうなってる)を置換するとき<br />\nに置換する。
これの問題点は2つあって、HTMLでは<br>と書かないといけないのに<br />にしてしまうこと。
もう1つはpre要素を使うとき、br要素の改行と\nの2つの改行が入ってしまうこと。
なのでindex.phpの「// brタグの後ろに改行コードを入れるの」コメントの前後を変更する
$blogn_skin = ereg_replace("<br />", "<br>", $blogn_skin);
// brタグの後ろに改行コードを入れる←入れない
//$blogn_skin = ereg_replace("<br />", "<br>", $blogn_skin);
1行コメントアウトでOKです。
あと、改行をbr要素に変換して投稿するにしている場合、ブロックレベル要素近辺は注意してかかないと変な改行が入りますよ。
まぁ多分気付くと思うけど。
あともう1つあるのだけどまた別に書きますわ。それは非常に有益な記事なので。
しかしすごい大改造をしたもんだ。
Author : Hidemaro
Date : 2008/05/18(Sun) 21:20
コンピュータ・インターネット | Comment | trackback (0)
blog comments powered by Disqus
  • 管理人様、毎日更新お疲れ様です。靖太郎と申します。
    毎日記事を読んでいます。(自分は中学生なので、ついていけない記事も時々ありますが・・・)

    それにしても、随分変わりましたね。コメントやトラックバックもついて、最初見たときは感動しました。
    掲示板をここまで改造するとは、すごく驚きです。

    追記 5月19日夜に作成する自ブログの記事より、「より強くも感じられる日記帳だ!」へテストとして、トランクバックを送信します。
    これからも、よろしくお願いします。
    Name : 靖太郎
    Date : 2008/05/19(Mon) 01:37 ID:B6QIbD6A

トラックバック

トラックバックURL取得

Tools