むかし日本語版に入れてもらった独自コード(ブログ間を移動したアイテムURLを自動修正)がFancyURLsの識別キー・カスタマイズに対応してなかった。ので、そのコードを書いてみる。
あとCustomURL、MultipleCategories v0.38がらみのもの。

// if a different blog id has been set through the request or selectBlog(),
// jump to correct url
//if ($blogid && (intval($blogid) != $obj->iblog))
//  doError(_ERROR_NOSUCHITEM);
if ($blogid && (intval($blogid) != $obj->iblog)) {
    if (!headers_sent()) {
        $b =& $manager->getBlog($obj->iblog);
        /*_hack for url key */
/*
        $correctURL = $b->getURL();
        if ($CONF['URLMode'] == 'pathinfo') {
            if (substr($correctURL,strlen($correctURL)-1,1)=='/')
                $correctURL .= 'item/' . $itemid;
            else
                $correctURL .= '/item/' . $itemid;
        }
        else
            $correctURL .= '?itemid=' . $itemid;
*/
        $CONF['ItemURL'] = $b->getURL();
        if ($CONF['URLMode'] == 'pathinfo' and substr($CONF['ItemURL'],-1) == '/')
            $CONF['ItemURL'] = substr($CONF['ItemURL'], 0, -1);
        $correctURL = createItemLink($itemid, '');
        /*_hack end */
        redirect($correctURL);
        exit;
    }
    else doError(_ERROR_NOSUCHITEM);
}

まあ自分的にはURL修飾にはCustomURLを使う予定なので、その点ではこのコードは意味なさそうだけど・・・うそ、意味あった。createItemLink()に渡せばURL修飾対応になるし、selector()が呼ばれる前にglobalfunctions.phpで$itemidもセットされるんだった。 階層化カテゴリーがコアに組み込まれればブログ分けを階層化カテゴリーの代わりに利用することも少なくなりそうなので、このおせっかいコードはあまり存在意義がなくなるかも。

コアに導入されるのを待ってたマルチ・サブカテゴリー機能。待ちきれずMultipleCategoriesを試用中。サブカテゴリーの無限階層は必要ないのでv0.38jで。katsumiさんのハックを適用。 マルチカテゴリー機能は使わず、別途タグプラグインを使う予定。

カテゴリーの階層化ってカテゴリー同士の親子関係を管理してるのかと思ったら、ちょっと違っててサブカテゴリーはサブカテゴリーとして管理してた。既存のカテゴリーA、B、Cをまとめカテゴリーの子としてぶら下げるようなことができないので、既存サイトに階層化を適用するには作業がけっこう大変そうだ。

CustomURLをMultipleCategories v0.38に対応させてみる。単に親カテゴリーを問い合わせるところをそのまま返しておけばOKみたい。

function getParents($subid)
{
    return $subid; //_hack
    (以下略)

あとMultipleCategories v0.38のPHP5対応。doSkinVar()の途中でJOINがらみのエラーが起きてたのでFROMのテーブル名のところをカッコで囲う。

$query =  'SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as authorname, UNIX_TIMESTAMP(i.itime) as timestamp, i.itime, i.imore as more, m.mnumber as authorid, c.cname as category, i.icat as catid, i.iclosed as closed' ;
//$query .= ' FROM '.sql_table('item').' as i, '.sql_table('member').' as m, '.sql_table('category').' as c';
$query .= ' FROM ('.sql_table('item').' as i, '.sql_table('member').' as m, '.sql_table('category').' as c)'; //_hack for JOIN on MySQL5

でもどうやらAndyさんが次期Nucleus用のカテゴリー関係のコードをプラグインで用意してくれるらしい・・・ちょっと早まったか?