http://nakahara21.com/index.php?itemid=661
カテゴリリストの表示が、開けたり閉めたり動的にできるようになっているプラグインです。表示がとてもすっきりするので前々から導入したいと思っていたのですが、なかなか思ったとおりにいかなくて挫折していました。個人的に修正した部分などをまとめておきます。
まず困ったのが、フォルダ画像と右側のカテゴリ名がなぜかズレている点でした。これについてはリンク先の解説ページのCSSのとおりで問題なかったのですが、CSSファイルの一番下に書いていたらなぜか無効になってました。ためしに一番上に持ってきたら解決して不思議。特に表記が途中で終わってる部分も発見できなかったので、なにかゴミデータなどが入ってるのかな?と思いました。
次に困ったのが、フォルダ画像などを使わないようにするにはどうするか、という点です。背景が白だと問題ないんですが、背景が黒いと透過GIF画像の端々がちょっと目立つので、出来れば表示したくなかったのです。これについては改造ではなく、意外なところに設定事項がありました。
dtree/dTree.php の中に this.config という記載があり*1、その中の項目を書き換えることで設定を変更できます*2。当サイトでは下記のように設定しました。
this.config = { target : null, folderLinks : true, useSelection : false, useCookies : false, useLines : true, useIcons : false, useStatusText : false, closeSameLevel : false, inOrder : false } ※target:リンク先のウィンドゥの開き方。true にすると外部ウィンドゥ。 ※folderLinks:フォルダにあたる親カテゴリ名をクリックした時に、カテゴリページを開くか、開かずに子カテゴリ一覧表示を行うか、の設定。 ※useSelection:カテゴリ選択時にクラスを生成するか(CSSと併用で背景色を変えたりする)
最後に困ったのが、表示したくないカテゴリの件と、カテゴリ名の表示の並びの件です。これは dtree/dtreedata.php 内の SELECT 句の最後に ORDER BY をつけたりして解決しました。
$res = sql_query("SELECT * FROM ".sql_table('category')." WHERE cblog= ".$blogid" ↓ $res = sql_query("SELECT * FROM ".sql_table('category')." WHERE cblog= ".$blogid." and cdesc < 10000 ORDER by cdesc" $query = "SELECT * FROM ".sql_table('plug_multiple_categories_sub')." WHERE catid".$catFilter; ↓ $query = "SELECT * FROM ".sql_table('plug_multiple_categories_sub')." WHERE catid".$catFilter." ORDER BY ordid";
なお、nucleus_category テーブルの cdesc は全て数値にすることでソートに利用しています。表示したくないカテゴリは10000に設定して、SQL文で除外条件をつけることで解決してるわけです。
※2006/7/16追記
サブカテゴリ選択時にツリーが非表示になっていたので、下記を修正しました。
dtreedata.php 102行目: $cid = requestVar('sid'); → $sid = requestVar('sid');
ちなみにプラグインファイル本体ではなく、Dtreeフォルダ内のファイルなので要注意。
- 注1 : Version 0.94からはプラグインオプションから設定が可能になっています。
- 注2 : ちなみに元になってる部分の海外サイトでの説明ページがありますね。
コメント