困った。

ボウリングのページをブラウザで見ようとすると、ふらっと悪魔が降臨してた。

そう、あのFatal error様だ。

Fatal error: Cannot redeclare getSubDirName() (previously declared in bowling.inc:6) in bowling.inc on line 19

同じ関数名がありますよ、だってさ。

bowling.incのgetSubDirName()は次の通り。

function getSubDirName($x)
{
  if($x == "analysis"){
    // サブディレクトリ名
    $y = "ボウリングスコア閲覧・分析";
    // クローラー対策(n=1,off=0)
    $z = 1;
  }
  if($x == "admin"){
    $y = "ボウリングスコア入力";
    $z = 0;
  }
  return array($y,$z);
}

6行目で定義されたgetSubDirName()関数が19行目で再び定義されてますよ、ってことは、結局該当部分を二回読み込んでいるのが原因ってことか。

すぐに思い当たった。

common.incファイル内で一度getCategory()関数を定義しているのだが、関数内で条件によりgetSubDirName()関数が定義されているbowling.incファイルをrequireし、getSubDirName()関数をコール。

関数定義のすぐあとでgetCategory()関数をコール。

そして同じcommon.incファイル内にsetHeader()関数を記述しており、その関数内でもgetCategory()関数をコール。

エラーが出たページ(index.php)ではcommon.incファイルをrequireし、setHeader()関数をコールしている。

このとき条件に合致したため、common.incファイルをrequireした時とsetHeader()関数をコールした時に、それぞれのタイミングでbowling.incファイルをrequireしているため、結局getSubDirName()関数が二回定義されていることに。

index.phpを書き換えずに(このファイルの書き換えは即ち、全てのカテゴリーのファイルの書き換えを意味するので)この問題を解決するには、common.incファイルのsetHeader()関数を書き換えるしかない。

仕方ない。

setHeader()関数内でgetCategory()関数をコールする代わりに、関数の外でコールされたgetCategory()関数から得られた変数群をglobal化して対応することにしよう。

で。

同じようなことがまた起こった。

Nucleusの機能の“FancyURLを有効にする”際に、専用の.htaccessファイルを該当ディレクトリに設置し、
index.phpファイルの

$CONF['Self'] = 'index.php';

を、

$CONF['Self'] = '(index.phpまでの絶対パス)';

と書き換える必要がある。

このとき、絶対パスを取得するために安易にcommon.incファイルをrequireしてしまったため、internal servere errorが。

そうだよね。後で読み込むxml.phpファイルで再度require(common.inc)をするもんね。

ということで、xml.phpファイルのrequire(common.inc);を削除。

すんなり解決。

さて。

あとは、ブログの改行が勝手に<br />となるのをなんとかしよう。

出来れば<p>~</p>となるようにしたい。

プラグインを探すと、SimpleParagraphsなるモノを発見。
http://www.tyada.com/item/187/catid/3

早速インストールして試してみたが、単に頭とお尻に<p>と</p>が付くだけ。改行は相変わらず<br />で処理。

どうしてだろうと色々試してみると、“Blog設定”で“アイテムの改行を変換する”がデフォルトで“はい”になっているのが原因であることが判明。

これを“いいえ”にすると、1回の改行で<br />、2回の改行で<p></p>を文末に付けてくれるようになった。

最高です。

製作者のtyadaさん、ありがとうございました。

Nucleusには様々なプラグインが用意されていて、多彩な機能を盛り込むことができる。
以下、Nucleusのプラグイン一覧ページより抜粋。

Nucleusはプラグインをインストールしてあらゆる機能を追加できます。
Nucleusでは、他のブログツールなら本体の中に組み込んでいるような機能もあえてプラグイン形式で提供しています。
それは、本体がぶくぶく膨らんでしまうことを避けるためです。
ある人にはとても使いたい機能でも他の誰かには不要な機能かもしれません。
Nucleusは、本当に必要な機能のプラグインだけを選んで自由に組み込んで使える軽いツールを目指しています。

いやあ、つくづく素晴らしい。

SimpleParagraphsに味をしめて、他のプラグインもインストールしてみることに。

AutoLink
http://japan.nucleuscms.org/wiki/plugins:autolink

Calendar Plugin
http://japan.nucleuscms.org/bb/viewtopic.php?t=4092

CommentParagraph
http://blog.heartfield-web.com/download/NP_CommentParagraph.html

HighlightSource
http://datoka.jp/old/nuc/plugins/NP_HighlightSource_Ver0.9-619.html
↑ありゃりゃ、古いプラグインのためか、ダウンロードできなくなってるや。。。

MetaTags
http://blog.cles.jp/np_cles/category/31/subcatid/4

Sanitize
http://sangatsu.com/index.php?itemid=112

MultiTags
http://japan.nucleuscms.org/bb/viewtopic.php?t=1798&start=80

製作者の皆様、本当にありがとうございます。

ローカル環境でなんとかうまくいったので、レンタルサーバーにインストール。

各種設定を済まし、完了。

ぼちぼち、今まで書き溜めていたこの日記をブログとしてアップしていこう。

でも今日は寝よう。