Nucleus」カテゴリーアーカイブ

NucleasからWordPressに移行

PHP が 5.3 になって、Nucleus のいろいろなところで不都合が出るようになってしまいました。
とりあえず記事の表示はできているのですが、プラグイン関係がほとんどダメで、Nucleus 本体から関数の参照渡しで記事を受け取って、それを加工するというパターンのプラグインがほぼ全滅でした。
僕が愛用していた NP_StripBR も NP_FootNote も使えなくなってしまい、また、どう直していいかも分からなかったので、いっそブログツールを乗り換えるかーということで、WordPress に挑戦してみることにしました。

WordPress には前にも挑戦したことがあって、そのときはテンプレートの複雑さと、管理画面の難しさで諦めてしまっていたのですが、あれからだいぶ経って、ずいぶん使いやすくなったように思います。
もしかしたら僕のコードを読む力も前よりアップしてるのかもしれないですけど。

過去の記事の移植はできましたが、この記事が事実上の初投稿なので、これがうまくいくかどうか、ドキドキなのですが。

Fedora17でNucleusを動かす

このブログは今は自宅サーバーではなく、レンタルサーバーで動かしているので、OS は Fedora ではないのですが、クローン環境を自宅に作っています。
それで、自宅サーバーの OS を Fedora17 にアップグレードしたら、Nucleusが表示されなくなってしまいました。
他の PHP スクリプトは動いており、MySQL を扱うスクリプトも同様に動いています。

原因は、PHP のバージョンにあるようでした。

PHP 5.4 の環境では、Nucleus は動作しないようで、./nucleus/libs/MANAGER.php に対して、次のような編集が必要になるそうです。

429行目の次の記述を

call_user_func(array(&$this->plugins[$listener], 'event_' . $eventName), &$data);

このように書き換えます。

call_user_func(array(&$this->plugins[$listener], 'event_' . $eventName), array(&$data));

これで、Fedora17でもNucleusが動くようになりました。

しかし、最初エラーログになんのエラーも出さずにエラーになったので何事かと思いましたが、こういうことだったんですね。

/nucleus/lib/globalfunctions.phpの29行目の「$CONF['debug'] = 0;」を「$CONF['debug'] = 1;」とすると、それまで出力が抑制されていたすべての警告メッセージが出力されるようになります。

雪を降らせてみました

このブログのデザインは、Webデザインレシピというサイトの影響を強く受けているのですが、そこで雪の降るアニメーションがなされているのを見て、僕も真似したくなりました。

導入したのはこちら。

snowstorm.js をサーバーに置いて、以下のコードを書くだけで、簡単に雪を降らせることができました。

<script type="text/javascript" src="snowstorm.js"></script>

Lightbox+を使って画像をその場でポップアップ

このブログに貼り付けられた画像は、クリックすると新しいタブ(ウィンドウ)で原寸大で表示されるようにしていたのですが、最近はページ遷移せずに、その場で拡大画像をポップアップで表示するのが流行っているみたいなので、Lightbox+というのを使って実現させました。

オリジナルの Lightbox と比べると、ウィンドウより大きい画像を表示する際に、ズームができるという特徴があるみたいです。

このモジュールを入れるにあたり、適用させたいイメージのリンクタグに、rel="lightbox" という属性を追加しないといけないのですが、Nucleusでは、/nucleus/libs/BODYACTIONS.php の 90行目 辺りで、画像を表示するためのタグを作っているので、ここを書き換えて対応させます。
僕はこんな風にしています。

$vars['image'] = '<a href="' . $vars['link'] . '" target="_blank" class="image" rel="lightbox"><img class="media" src="' . $vars['link'] . '" width="' . $width . '" height="' . $height . '" alt="' . $vars['text'] . '" title="' . $vars['text'] . '" /></a>';

ポップアップさせずに画像だけを原寸大で表示させたいという方は、画像をホイールクリックで開いて下さい。
そうすると、今まで通り別タブ(ウィンドウ)で画像だけが表示されます。

■ 追記

ホイールクリックしたときに新しいタブで開いてくれるのは Firefox だけでした。:P
あと書き忘れてたんですけど、ズームさせるには、まず画像をクリックしてポップアップさせて、左上のアイコンをクリックしてから、ホイールを回して下さい。

NP_TrackBackでトラックバックされた数にローカルのものも含む

Nucleusのプラグイン NP_TrackBack で、トラックバックされた数を表示するには、

<%TrackBack(count)%>

と書きますが、これだと外部からのトラックバックのみがカウントされ、ローカルのトラックバックがカウントされません。

そこで、両方がカウントされるように、NP_TrackBack を修正しました。

ソースコードは GitHub にアップロードしました。

GitHubを使うのは初めてなので、使い方が間違ってるかもしれません。
初めに、元にした v.2.0.3 jp13 をコミットしてから、修正をコミットすれば良かったと、後で思いましたが、取り消し方が分からないのでそのままです。

イイネボタンの設置とはてなスターの復活

イイネなど
記事の下にGoogleの+1ボタンと、mixiのイイネ!ボタンと、はてなスターを設置してみました。
ホントはこんなに隙間を空けないで並べたかったんですけど、それぞれのボタンの仕様で右側に大きく隙間が空いちゃうので、センタリングっぽくしています。

以前、タイトルの横にはてなスターを設置していたこともあったのですが、滅多にスターが付かない上に、読み込み処理が重かったので、閲覧者に悪い印象しか与えないと思って外してしまっていました。
今回は各記事の下の方に設置したので、読み込みの遅さは気にならないと思いますし、目立つ場所でも無いので、あまり押されないような場合でも、悪い印象を与えにくいかなと思ってます。

ついでに、NucleusにページのURLを取得するのにいい変数がなかったので、プラグインを作りました。
適当ですが、ソースコードを貼っておきます。

NP_EzCacheを全ページで有効にしたらNP_Captchaが効かなくなってた

Nucleusではアクセスがある度にDBを参照してPHPでページを組み立てて表示するのですが、NP_EzCacheを使うと、ページのHTMLのキャッシュを作ってくれて、2回目以降のアクセスではキャッシュを返してくれるようになり、処理が少ない分高速化できます。

一方、NP_Captchaは、ページを読み込む度に新しいキャプチャを生成し、コメント書き込み時にユーザーにその文字列を入力させることで、スパム投稿を防ぎます。
キャプチャは毎回違う内容が表示されなければ意味が無いので、キャッシュできません。

つまり、個別アイテムページではNP_EzCacheを有効にしてはいけないのです。
有効にしていると、画像に invalid key や already activated と表示されてしまい、認証ができなくなります。

RSS2.0で全文配信するようにしました

これまでこのブログでは、Atomでは全文配信、RSS2.0では文章の途中まで配信するようにしていました1が、最近自分がスマホでRSSリーダーを使うようになって、わざわざブラウザを起動しなくても本文が全て読める便利さを痛感している2ので、このブログでもRSSで全文配信するようにしました。
最近は興味半分で広告貼ったりしてますけど、たいして儲けてるわけでもないし、そもそも別に商用目的のサイトじゃありませんから、何が何でも本サイトにアクセスを誘導する必要もないですからね。

まあ、RSS購読してくれてる人がどれほどいるか知らないのですがw3

  1. 特に深い理由は無かったんですけどね。
  2. これまではFirefoxで読んでたから気にしてなかった。
  3. いなかったりしてw

ソーシャルブックマークアイコンを変更しました

このブログのスクリーンショット
このブログではタイトルの右側に、mixiチェックTweetボタンはてブに追加するボタンなどのソーシャルブックマークアイコンを表示していますが、このアイコンが幅を取ると、長いタイトルが改行されてしまうというのが気になっていました。
そこでアイコンを正方形のものに置き換えて、タイトルを表示するスペースを少し広くすることにしました。

参考にしたのはこちらの記事。

ただ、この記事で紹介されているのはMovable Typeに埋め込む方法なので、変数名などをNucleus用に置き換えなくてはなりません。
しかしNucleusで利用できる変数は少なく、対応するものが見付からなかったので、専用のプラグインを作ることにしました。それなら環境変数をプログラムで処理したりして自由な表示が可能になりますからね。1

アイコンの色がどれも濃いためか、白っぽい背景のこのブログのデザインには浮いてるような感じがしてしまったので、アイコンを並べている部分の背景を少し暗くしてみました。ついでに少し角丸。
デザインの合うフリーのアイコンも探してみたのですが、国内サービスであるmixiとはてブのアイコンでいいものが見付からなかったので、オリジナルに近いものを利用しています。
まだちょっと違和感あるんだけど。

あ、あとFacebookでシェアするためのアイコンもついでに並べました。

■ 追記

GitHubでソースコードを公開しました。

  1. 作ったプラグインは後でオープンソースにしてどこかで公開しようと思ってます。

Nucleusをv3.64にアップグレード

Nucleusのサイトを見ていたら、新しいバージョン3.64が出ていたのでアップグレードしました。
今回のアップグレードではデータベースの文字コード周りに修正が加わったらしく、アップグレード時に文字化けが起こることがあるそうです。

このブログでもアップグレードしたら文字化けが起こってしまいました。
その対策も含めて、アップグレードの方法を記録しておきたいと思います。