Nucleus
NP_ItemCopyの修正
river氏の作成されたプラグイン、NP_ItemCopyを愛用している。
別のサーバーに現在配布されているバージョン1.01を入れたところ、既存のアイテムの「タイムスタンプを更新」して保存したら、タイムスタンプが 日付: 1999-11-30 時間: 00:00 として保存されてしまった。現在ご覧のブログではそのような現象に遭遇したことがなかったので、ちょっと戸惑ったが、確認してみると永く使用していたのは初期バージョン(1.0)だった。
ぐぐってみたら、mi-i氏が修正パッチを公開しておられた。修正点は以下の通り。
65c65
< if ($blog->settings["ballowpast"] == 0) {
---
> if ($data['blog']->settings["ballowpast"] == 0) {
早速適用させていただいた。ありがたいことです。
blogurl テンプレート変数
自分用のメモ
otherblogで参照するテンプレートの中で使用されているblogurlが返す値は、そのアイテムが所属するblogのURLだ。参照している側のblogのURLではない。
NP_ShowBlogsをちょっと拡張
NP_ShowBlogsは、バージョン2.00からStickyアイテムに適用するテンプレートを引数で指定できるようにしていただいている(作者のまみおさんに感謝)。こうなると、カテゴリ非選択時だけStickyアイテムを表示するだけでは飽き足らず、カテゴリ選択時も特定のアイテムを指定テンプレートする目的で使用したくなっちゃうのが人情ってものではございませんか。(って私だけ?)
そこで、タカさんが配布しておられるサブカテゴリ対応版NP_ShowBlogs 2.00をベースに、
- スキン変数ShowBlogsの第8パラメータにフラグを追加
- 第7パラメータにSticky表示用テンプレートが指定され、かつ第8パラメータ=1の場合には、カテゴリ選択時にもそのカテゴリに属するStickyアイテムをSticky表示
- サブカテゴリが選択されているときは、そのサブカテゴリに属するStickyアイテムをSticky表示
するパッチを作成してみました。
サブディレクトリにあるブログでRSS Feed
再び、何をいまさらという話なんだけど。
自分のブログのRSSフィードを今までチェックしたことはなかった(汗)が、改めて見てみると、サブディレクトリに作成したブログについてはRSSが配信できていない。
ブログをサブディレクトリに作成する際、RSSフィードとAtomフィードを担うxml-rss2.phpとatom.phpも一緒にサブディレクトリに作成する必要がある。その場合、Nucleusをインストールしたディレクトリ(Nucleus Rootと呼ぶことにする)にあるxml-rss2.phpとatom.phpを加工して、ブログを設置するサブディレクトリに置く必要がある。
加工するのは2箇所。
include('./config.php');
の行を、以下に変更。
include('../config.php');
selector();
の前に
selectBlog('Blogの短縮名');
を挿入。
以上で、サブディレクトリにあるブログのRSS・Atomフィードが提供できる。rsd.phpも同様に対応できる。
Fancy URLs環境下のトラックバックで送られるリンクURLに含まれる二重スラッシュの回避
いまさら何を、という話なんだけど。
NP_TrackBack(Ver.1.23bj7)プラグインを使用してFancy URLsモードでTrackBackを打つと、Ping先のトラックバック元へのリンクURLに二重のスラッシュが含まれてしまう場合がある。Blog URLがスラッシュで終わっていると、この現象が発生する。
この原因は、NucleusJPForumでのだいぶ前のまみおさんの指摘のように、NP_TrackBack.phpのevent_PostAddItem関数およびevent_PreUpdateItem関数で、グローバル変数$CONF['ItemURL']にBlog URLを代入してからcreateItemLink関数を呼び出しているためだ。現在ご覧のブログでは、Blog URLが 'http://www.tyada.com/computing/'と指定されているので、この文字列が$CONF['ItemURL']に渡される。
一方でcreateItemLink関数は以下の引用のように、Fancy URLsモードでは$CONF['ItemURL']の値に、単純に'/item/'と$itemidを連結して返してくれる。
function createItemLink($itemid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ItemURL'] . '/item/' . $itemid;
else
$link = $CONF['ItemURL'] . '?itemid=' . $itemid;
return addLinkParams($link, $extra);
}
かくして、'http://www.tyada.com/computing//item/266'というスラッシュを2個含んだURLがPingされてしまう。
それなら、Blog URLを 'http://www.tyada.com/computing'などとスラッシュで終わらないように指定すればいいんだけど、Blog URLを使用するのはNP_TrackBackだけじゃないからね。新しく作ったblogならともかく、既存のblogだと他にどのような影響が出るのか評価するのが大変だ。
createItemLink関数は'/item/'をつけてリンクURLを返してくれることが上記のように分かっているので、createItemLink関数を呼ぶ前に$CONF['ItemURL']の末尾にスラッシュが付いている場合にはそれを削ればよい。
event_PostAddItem関数およびevent_PreUpdateItem関数の最後の方、createItemLink関数を呼ぶ前に、以下のコードの3〜5行目を追加する。
if (!$CONF['ItemURL']) $CONF['ItemURL'] = $blog->getURL(); if ($CONF['URLMode'] == 'pathinfo' && substr($CONF['ItemURL'], strlen($CONF['ItemURL']) - 1) == '/') $CONF['ItemURL'] = substr($CONF['ItemURL'], 0, strlen($CONF['ItemURL']) - 1); $url = createItemLink($itemid);
これで他への影響を心配することなく、汎用的に修正できると思う。
FancyURLsモードで新しいblogをサブディレクトリに置いた場合のitemlink
FancyURLsモードで新しいblogをサブディレクトリに設置すると、デフォルトではテンプレート変数<%itemlink%>の返す値は、
http://www.tyada.com/music/index.php?itemid=253
のようになってFancyURLsしてくれない。できれば、
http://www.tyada.com/music/item/253
でアクセスしたいのが人情ってもんだ。
# と言いつつ、長い間放っていたが。
<%itemlink%>の値を正しくFancyURLsさせるには、/music/index.phpの中の$CONF['Self']の値を以下のように変更する。
$CONF['Self'] = '/music';
もしくは相対パスなら、
$CONF['Self'] = '.';
また、上記のリンクをアクセスすると 404 Error - Not found になってしまうので、サブディレクトリmusicの中に以下のitemファイルを作っておく。
<?
include('../fancyurls.config.php');
include('../config.php');
$data = explode("/",serverVar('PATH_INFO'));
$itemid = intval($data[1]);
selectBlog('music');
selector();
?>
WAMPでNucleus CMS
先に構成したApatch + MySQL + PHP on Windows(WAMP)環境に、Nucleus CMS 3.15 をインストールする。
入手と設置
nucleus3.15_ja_euc.zipを取得する。
目的のディレクトリ(私の場合はE:/home/httpd/html/)に、入手したファイルを展開する。nucleus3.15_ja_eucというフォルダができるので、nucleusという名前に変更しておいた。
WAMP その4 phpMyAdminのインストール
WAMP その3 PHPのインストール
入手
PHP 4.3.11 zip packageをダウンロードして、インストールしたい場所(私の場合はD:)に展開する。php-4.3.11-Win32なるフォルダが作成されるので、phpに名前を変えた。
WAMP その2 MySQLのインストール
続いて、MySQLをインストールする。
入手
現在、4.0系、4.1系、5.0系が配布されている。安定版は4.0系と4.1.7以降の4.1系。http://dev.mysql.com/downloads/では MySQL 4.1 が recommended となっているが、今回の目的では既設サーバー環境との互換性が重要で、新機能を要求しているわけではない。
そこで、4.0系の最新版のインストーラーなしパッケージ、mysql-4.0.24-win-noinstall.zipをダウンロードした。

