【TIPS】nucleusをxamppにインストールしてみました

スポンサーリンク

nucleus=wordpressと同じタイプの、ブログを作るCMS(Contents Management System;コンテンツ マネージメント システム)です。別のブログ作成ツールはどんな感じなのかと思って試しにxamppにインストールしてみました。テスト環境のxamppは1.7.3(Windows7 + PHP 5.3.1)です。
ほぼメモ用です。nucleusは3.6.4.

・インストール手順
Nucleus CMS マニュアルに書いてあるとおり。
設置→apacheの設定→インストール(127.0.0.1/nucleus/install)でmysqlの設定と管理用アカウントの設定 で一通りOK。ほぼwordpressと同じ。
インストール後は「インストールディレクトリを消してください」と出たり、親切な感じ。xampp上(Windows上)だとconfig.phpのアクセス権が777扱いなので「セキュリティ上良くない」と出たり、なかなか親切。でもWindows上では仕方がないので、/nucleus/libs 71行目の値を1から0に変更

$CONF['alertOnSecurityRisk'] = 1→0;

・少しだけプラグインをインストール
参照が多い記事のリストをつくってみたかったので、それ関係のプラグイン「NP_Views 1.9.1」 http://wakka.xiffy.nl/views と「NP_MostViewed 2.4」 http://wakka.xiffy.nl/mostviewed を有効化。「NP_MostViewed」を使うには「NP_Views」が必要なため、それから有効化。が、エラーが出て有効化できないorz

色々調べていると、バージョンが違うとか色々ありましたが結局原因はプラグイン本体の「NP_Views.php」の先頭が

<?

だとエラーで

<?php

にするとあっさり有効化できました。NP_MostViewedも有効化OK。

が、NP_MostViewed 2.4で記事のタイトルを出すと文字化けする。これを直すために調べるとNP_MostViewed.phpの86行目

$outtemp = str_replace("%p", htmlentities($row['title']), $outtemp);

のstr_replace関数が日本語(マルチバイト)に対応していないのが理由のようです。ぐぐると上の86行目を

$outtemp = mb_ereg_replace("%p", htmlspecialchars($row['title']), $outtemp);<br />

にすればよいとありますが、自分の環境ではブログの記事の背景色がなぜか透明にorz。参考にした記事が2005年のもので少し古いので、何か変わったのかもしれないと再調査。するとhtmlspecialchars関数を無効にして

$outtemp = str_replace("%p", $row['title'], $outtemp);<br />

とすると文字化けは解消された。が、このままhtmlspecialchars/htmlentites関数を無効にするとセキュリティ上危険な気がするので、有効にしたまま文字化けを解消したい。さらに調べて

$outtemp = str_replace("%p", htmlentities($row['title'],ENT_QUOTES,"UTF-8"), $outtemp);

とするとタイトルにhtmlentityを行いつつ、文字化けは解消されました。

結局、ソースは「$outtemp = str_replace(“%p”, htmlentities($row[‘title’]), $outtemp);」で、htmlentities関数は引数を3つとれますが1つしかないため、文字コードはデフォルトの「ISO-8859-1」が採用されます。英語圏だとこれでいいですが、日本語圏のためmysqlの文字コードをUTF-8にしていたため不整合が生じ、結果文字化けが起きていたようです。htmlentities関数では3番目の引数で文字コードが指定できるので、明示的に「UTF-8」を指定するとOKでした。

・感想
wordpressより丁寧な感じ。wordpressだと複数ブログは3.0から標準機能になったけど、nucleusは最初から複数ブログ対応だったようです。あとはざっとプラグインのソースを見ましたが、短くわかりやすい感じがしました。wordpressのプラグインのソースはなかなか大量で読む気になりづらいところがありましたが。
本家のフォーラムで英語でバンバン質問&補足している方がいてすごいと思いました。

・参考リンク
forum「NP Viewsがインストールできない(英語)」Thread NP_Views can not installed because no plugin class | Nucleus Support | BoardReader

forum「NP Viewsがインストールできない(英語)」の回答Nucleus Support :: View topic – NP_Views can not installed because no plugin class

NP_Mostviewedの文字化け解決 記事の閲覧回数を表示する「NP_MostViewed」 – 石間謙 勝手blog
php htmlentities関数 PHP: htmlentities – Manual