Nucleus標準のカテゴリに加えて、サブカテゴリ、マルチカテゴリ機能を付加するプラグイン。
バージョン0.38.*jとバージョン0.5.*j(0.403jの修正版)では機能が違いますので注意してください。 |
---|
Nucleus管理画面のプラグイン一覧からMultipleCategoriesの行にある「管理」というリンクをクリックするとサブカテゴリ作成画面に入れます。ブログごとカテゴリ一覧が表示されていますので、サブカテゴリを作りたいカテゴリの行の「Edit sub categories」というリンクをクリックして設定してください。
アイテムの新規作成・編集画面の追加オプション欄に、そのブログのカテゴリ一覧がチェックボックス付きで表示されます。各カテゴリがサブカテゴリをもっている場合はそれも表示されます。ここでアイテムに設定したいカテゴリ・サブカテゴリにチェックを付けてください。表示されているものならどれをチェックしてもいくつチェックしても構いません。
なお、いずれかのサブカテゴリにチェックを付けた場合は、例えそのサブカテゴリの親カテゴリがアイテムのもともと属するカテゴリと同一であっても、仕様上アイテム保存時に強制的に親カテゴリにもチェックを付けますのでご了承ください。
<%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を付けてください。
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)%>を使えるようにできます。
テンプレート変数やカテゴリーリストなどでURLを出力する場合の設定です。通常URLで運用している人向け。blogのURLがスラッシュで終わる場合、catidなどのパラメータを付ける時にindex.phpを補うか否か。
全てのURLモード対象。デフォルトブログのカテゴリーURLにblogidパラメーターを付けるか否か。
全てのURLモード対象。あるカテゴリーの属するblogのURLがデフォルトblogのURLと違う場合、このカテゴリーのURLにblogidパラメーターを付けるか否か。これをいいえにした場合、
http://example.com/
と
http://example.com/index.php
も違うURLと見なされます。一文字でも違うと異なるURLとして扱いますので注意してください。
テンプレート変数などでそのアイテムのカテゴリーを表示する時の設定です。もしあるアイテムが複数のカテゴリーに属する場合、本来のカテゴリー名と追加カテゴリー名との間に入れる区切り文字を指定してください。
追加カテゴリーがいくつかある場合、それら追加カテゴリー間の区切り文字を指定してください。
あるアイテムがサブカテゴリーに属している場合、テンプレート変数等でそのサブカテゴリー名を表示する時のフォーマットを指定してください。
あとはカテゴリーリストやアーカイブリスト表示のためのテンプレート設定などです。なお、下から2番目のShow in quick menuを「はい」にすると、左メニュー(quickMenu)内にサブカテゴリー作成・編集画面へのリンクを出すことができます。
Nucleus v3.3以降では、選択中サブカテゴリーの情報を<%if%>の条件に指定することができます。
<%if(MultipleCategories, subcategory)%>
<%if(MultipleCategories, subcatid, ID)%>
<%if(MultipleCategories, subcatname, 名前)%>
マルチカテゴリーだけ使うのなら問題ないんですが、サブカテゴリーに関して。ただこれも、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についてもマルチカテゴリーだけ使用する場合は問題ないですが、サブカテゴリーを使う場合は. htaccessに追記する必要があります。これは実際MagicalURLな人の方が詳しいと思うのでおまかせします(ごめんなさい)。今のところ、私が作っている対応プラグインは全て、catidも一緒にURLに出力されるようにしています。んで、catidのあとにsubcatidが来ます。
こうしたらOKだったとかありましたらコメントいただけると嬉しいです。