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 – Manuald