plugins:multiplecategories

NP_MultipleCategories

Nucleus標準のカテゴリに加えて、サブカテゴリ、マルチカテゴリ機能を付加するプラグイン。

バージョン0.38.*jとバージョン0.5.*j(0.403jの修正版)では機能が違いますので注意してください。
General Plugin info
作者: Anand + nakahara21 + Taka + 佐藤(な) + shizuki + Katsumi
最新のバージョン: サブカテゴリの階層化非対応版 → 0.38.1j(2007/05/01)
サブカテゴリの階層化対応版 → 0.5.1j(2007/05/01)
入手先: サブカテゴリの階層化非対応版 → here
サブカテゴリの階層化対応版 → here
ソース:
動作サンプル:
フォーラム参照先:

インストール方法

  1. Zipファイルを展開して、中身をサーバーのプラグインディレクトリにアップロードする
  2. 管理画面からプラグインをインストールする

このプラグインの使い方

サブカテゴリーの作成

Nucleus管理画面のプラグイン一覧からMultipleCategoriesの行にある「管理」というリンクをクリックするとサブカテゴリ作成画面に入れます。ブログごとカテゴリ一覧が表示されていますので、サブカテゴリを作りたいカテゴリの行の「Edit sub categories」というリンクをクリックして設定してください。

:plugins:multiplecategories_000.png :plugins:multiplecategories_001.png

マルチカテゴリー・サブカテゴリーの指定方法

アイテムの新規作成・編集画面の追加オプション欄に、そのブログのカテゴリ一覧がチェックボックス付きで表示されます。各カテゴリがサブカテゴリをもっている場合はそれも表示されます。ここでアイテムに設定したいカテゴリ・サブカテゴリにチェックを付けてください。表示されているものならどれをチェックしてもいくつチェックしても構いません。

:plugins:multiplecategories_002.png

なお、いずれかのサブカテゴリにチェックを付けた場合は、例えそのサブカテゴリの親カテゴリがアイテムのもともと属するカテゴリと同一であっても、仕様上アイテム保存時に強制的に親カテゴリにもチェックを付けますのでご了承ください。

スキン/テンプレートへの記述

テンプレート変数

<%MultipleCategories%>

アイテムのテンプレートに記述すると、その場所にそのアイテムの属するカテゴリ・サブカテゴリ名のリンクが表示されます。複数ある場合はそれら全てが表示されます。表示形式についてはある程度はプラグインオプションで指定できます。
また、v0.34j以降からはNucleusの<%itemlink%><%MultipleCategories(itemlink)%>と置き換えることができます。サブカテゴリー選択状態も反映されたアイテムのURLが出力されます。

スキン変数

アイテム表示、ブログ表示、カテゴリーリスト表示、アーカイブリスト表示、<%category%>のサブカテゴリー版、と、これだけでも何とかやっていけるように一応の装備はしてあります。

アイテムスキン内

<%blog(mytemplate,10)%><%MultipleCategories(mytemplate,10)%>に置き換えれば、マルチカテゴリー・サブカテゴリー設定が反映されたブログ表示をすることができます。
注意:「mytemplate」の部分は実際に使用しているテンプレートの名前に置き換えて読んでください

カテゴリーリスト表示

Nucleus標準のカテゴリーリストにマルチカテゴリー・サブカテゴリー設定を反映させたものです。ポスト数表示も可能。テンプレートはプラグインオプションで設定します。スキンへは以下の様に記述してください。

<%MultipleCategories(1,categorylist)%>

最初のパラメーターとして必ず1を付けてください。なお、ひとつも記事が無かったり、全てドラフトか未来のアイテムだったりするカテゴリー・サブカテゴリーは表示されません。

アーカイブリスト表示

Nucleus標準のアーカイブリストにマルチカテゴリー・サブカテゴリー設定を反映させたものです。テンプレートはプラグインオプションで設定します。スキンへは以下の様に記述してください。

<%MultipleCategories(1,archivelist)%>

最初のパラメーターとして必ず1を付けてください。

アーカイブリストスキンへのリンク(ver.0.37jから)

Nucleus標準の<%archivelink%>に変わるものです

<%MultipleCategories(1,archivelink)%>

最初のパラメーターとして必ず1を付けてください。

サブカテゴリーのデータを表示

<%category%>のサブカテゴリー版です。サブカテゴリーが選択されていない場合は何も出力されません。

  • <%MultipleCategories(1,id)%>

    そのサブカテゴリーのID

  • <%MultipleCategories(1,desc)%>

    そのサブカテゴリーの説明

  • <%MultipleCategories(1,name)%>

    そのサブカテゴリーの名前

  • <%MultipleCategories(1,url)%>

    そのサブカテゴリーのURL

  • <%MultipleCategories(1,link)%>

    アイテムスキン内でのみ有効なパラメーターです。
    テンプレートで<%MultipleCategories%>と記述した時と同様の表示がされます。

サブカテゴリーが選択されている場合は、URLに「?catid=6」などカテゴリーIDパラメーターが付いていない場合でも、Nucleus内部では親カテゴリーが選択されているものとして処理されます。したがって、<%if(category)%>の中に入れるとスマートかもしれません。また、Nucleusコアを少し改造することで<%if(subcategory)%>を使えるようにできます。

オプション

  • [When URL-Mode is normal] If a blog URL ends with "/", add "index.php" before query strings.

テンプレート変数やカテゴリーリストなどでURLを出力する場合の設定です。通常URLで運用している人向け。blogのURLがスラッシュで終わる場合、catidなどのパラメータを付ける時にindex.phpを補うか否か。

  • Add blogid to default blog\'s category URLs.

全てのURLモード対象。デフォルトブログのカテゴリーURLにblogidパラメーターを付けるか否か。

  • When a blog URL is different from default blog URL, add blogid to its category URLs.

全てのURLモード対象。あるカテゴリーの属するblogのURLがデフォルトblogのURLと違う場合、このカテゴリーのURLにblogidパラメーターを付けるか否か。これをいいえにした場合、

http://example.com/

http://example.com/index.php

も違うURLと見なされます。一文字でも違うと異なるURLとして扱いますので注意してください。

  • Separate character between a category and additional categories.

テンプレート変数などでそのアイテムのカテゴリーを表示する時の設定です。もしあるアイテムが複数のカテゴリーに属する場合、本来のカテゴリー名と追加カテゴリー名との間に入れる区切り文字を指定してください。

  • Separate character between additional categories.

追加カテゴリーがいくつかある場合、それら追加カテゴリー間の区切り文字を指定してください。

  • Display form of a category name when the item belongs to one or more sub categories.

あるアイテムがサブカテゴリーに属している場合、テンプレート変数等でそのサブカテゴリー名を表示する時のフォーマットを指定してください。

あとはカテゴリーリストやアーカイブリスト表示のためのテンプレート設定などです。なお、下から2番目のShow in quick menuを「はい」にすると、左メニュー(quickMenu)内にサブカテゴリー作成・編集画面へのリンクを出すことができます。

<%if%>の条件にサブカテゴリーを使用する

Nucleus v3.3以降では、選択中サブカテゴリーの情報を<%if%>の条件に指定することができます。

  • 条件「何れかのサブカテゴリーが選択されている場合」
<%if(MultipleCategories, subcategory)%>
  • 条件「選択中サブカテゴリーのIDが、指定値の場合」(値は、第3引数で指定します。)
<%if(MultipleCategories, subcatid, ID)%>
  • 条件「選択中サブカテゴリーの名前が、指定値の場合」(値は、第3引数で指定します。別カテゴリー下のサブカテゴリーでも、同じ名前であれば条件を満たします。)
<%if(MultipleCategories, subcatname, 名前)%>

Tipsと裏技

FancyURLs, MagicalURLsへの対応方法

FancyURLs

マルチカテゴリーだけ使うのなら問題ないんですが、サブカテゴリーに関して。ただこれも、URL中サブカテゴリーより先にカテゴリーが来るのなら問題ないはずです。私が作ったものはなるべくそうなるようにしています。というわけで、もしこのプラグインに対応するプラグインが将来できた時や私のミス(または仕様)により、カテゴリーID無しのURLやサブカテゴリーIDが先に来ちゃった場合の対策方法です。

config.phpと同じ場所に、cagtegoryなどと同様subcatidというファイルを作ってください。そしてその中身を以下の様に記述して保存してください。

<?php
 
include('./fancyurls.config.php');
include('./config.php');
 
$data = explode("/",serverVar('PATH_INFO'));
$subcatid = intval($data[1]);
 
selector();
 
?>

そのあと、.htaccessに以下を追記すればOKです。

<FilesMatch "^subcatid$">
    ForceType application/x-httpd-php
</FilesMatch>

MagicalURLs

MagicalURLsについてもマルチカテゴリーだけ使用する場合は問題ないですが、サブカテゴリーを使う場合は. htaccessに追記する必要があります。これは実際MagicalURLな人の方が詳しいと思うのでおまかせします(ごめんなさい)。今のところ、私が作っている対応プラグインは全て、catidも一緒にURLに出力されるようにしています。んで、catidのあとにsubcatidが来ます。

こうしたらOKだったとかありましたらコメントいただけると嬉しいです。

希望事項

バグ

開発履歴

  • version 0.38.1j [2007-05-01] Read here
    • <%if%>拡張 by 佐藤(な)
    • カテゴリリスト高速化 by Katsumi
    • PostDeleteSubcatイベントなど追加 by shizuki
    • 言語ファイル化 by shizuki
  • version 0.5.1j [2007-05-01] Read here
    • <%if%>拡張 by 佐藤(な)
    • カテゴリリスト高速化 by Katsumi
    • PostDeleteSubcatイベントなど追加 by shizuki
    • 言語ファイル化 by shizuki
  • version 0.38j [2006-11-27] by 佐藤(な) Read here
    • 脆弱対策
    • Item UIの<label>修正
  • version 0.5j [2006-11-26] by 佐藤(な) Read here
    • 脆弱対策
    • MySQL5系対応
  • version 0.403j [2006-07-22] by 佐藤(な) Read here
    • 新規インストールでエラーが表示されるのを修正
  • version 0.402j [2006-05-02] by 佐藤(な) Read here
    • サブカテゴリ設定時の親指定リストの不具合を修正
    • 自分を含めた子孫を親に指定した場合の処理を変更
    • 子サブカテゴリの並び順の変更をソートキー指定可能に
  • version 0.401j[Subspecies t1855-11692] [2006-03-27] by 佐藤(な) Read here
    • 親となるサブカテゴリ指定時に無限ループに陥る可能性を排除
  • version 0.401j[Subspecies t1855] [2006-03-24] by 佐藤(な) Read here
    • 指定サブカテゴリのテンプレート出力改良
  • version 0.401j [2005-10-13] by 佐藤(な) Read here
    • 投稿編集ページでのサブカテゴリ指定インターフェイス改良
  • version 0.40j [2005-07-20] by nakahara21 Read here
    • サブカテゴリの階層化に対応
  • version 0.37j [2005-05-07] by Taka Read here
  • version 0.34j [2005-02-05] by Taka Read here
  • version 0.33j [2005-01-04] by Taka Read here
  • version 0.32j [2004-12-23] by Taka Read here
  • version 0.31j [2004-12-20] by Taka Read here
  • version 0.30j [2004-12-19] by Taka Read here
  • 2004年以前
 
plugins/multiplecategories.txt · 最終更新: 2011/03/23 21:28 (外部編集)