Skip to main content.

NP_Dtree 0.92

ツリー形式でカテゴリ(サブカテゴリ)一覧を表示するプラグイン、NP_Dtreeの0.92です。
複数blogの一括表示はせず、表示中のblogのみツリー表示します。

インストール後、スキンに
<%Dtree()%>
と書くとツリーメニューが表示されます。


1)リンクURL生成を見直しました。
○サブディレクトリ運用の場合に正しいリンク先とならない点
○Nucleus v3.3+URLカスタマイズの場合に期待するURLとならない点
に対応したつもりです。

2)アイテム(記事)のカテゴリ情報ナビ機能を付加しました。

上記の変数をテンプレートに書けば、そのアイテムが属するカテゴリ(とサブカテゴリ)をハイライト表示して、かつ、その枝だけを開いた状態でツリー表示します。

cssの調整サンプルを書いておきます。

cssは以下を参考にしてください。
.dtree {
    font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
    font-size: x-small;
    color: #666;
    white-space: nowrap;
    width:100px;
}
.dtree img {
    border: 0px;
    vertical-align: middle;
}
.dtree a {
    color: #333;
    text-decoration: none;
}
.dtree a.node, .dtree a.nodeSel {
    white-space: nowrap;
    padding: 1px 2px 1px 2px;
}
.dtree a.node:hover, .dtree a.nodeSel:hover {
    color: #333;
    text-decoration: underline;
}
.dtree a.nodeSel {
    background-color: #c0d2ec;
}
.dtree .clip {
    overflow: hidden;
}
.dtree a.selectedNode {
    background-color:#fcc;
    font-weight:bold;
}
.dtree a.selectedCatNode {
    background-color:#ffc;
    font-weight:bold;
}
.dtree a.selectedScatNode {
    background-color:#ffc;
    font-weight:bold;
}
.dtree a.urlselected {
    border-right:1em solid red;
}



a.selectedNode は、Nucleus標準機能で指定したカテゴリ部分
a.selectedScatNode は、NP_MultipleCategoriesを使って指定したマルチカテゴリ部分
a.selectedScatNode は、NP_MultipleCategoriesを使って指定した(マルチ)サブカテゴリ部分
の装飾です。
この3つは、テンプレートに埋め込んだDtreeに適用されます。(v0.9以降)

最後のa.urlselectedは、URLで指定されたcatidとsubcatidに適用されます。(v0.92以降)


このcssでは、すべてopenした場合、ブロックの横幅が自動で広がっちゃいますので、サイドバーに置く時はcssを調整して下さい。
(でもって、こう書いたら広がらないですというコメントがあると嬉しいです)
以下はサーバ移転前に頂いたコメントです。

◆2006-04-05 17:03 藤咲
とりあえず、私のかかえてた2点の問題は解決しました(^^
NP_Magicalでmagicalurl.config.phpとしてしまっている点でちょっと修正が必要でしたが…。
fancyurl.configをいじらない方が楽かなと思ってとった手段だったんですが、こうなると逆効果ですねぇ。

cssの.dtree {width:100px;}は.
.dtree {width:100%;}
にしています。

気になる点:
1)ツリーを展開してサブカテゴリをクリックしてサブカテゴリページを表示したときに、ツリーが閉じてしまう。

2)IEで文字サイズを標準にしていても、ツリーをクリックすると文字サイズが最小になってしまう。

◆2006-04-05 17:42 藤咲
文字サイズが最小になるっていうのは正しくなかったです。フォントサイズが変わってしまうという感じでした。
CSSの問題かなぁ…。

◆2006-04-06 09:43 藤咲
CSSの
.dtree {
font-size: x-small;
}
を削除して、
.dTreeNode {
font-size: x-small;
}
としたら、フォントサイズが変わる問題は解決しました。自宅のIEでは起きなかったんですが、いったいどのバグなんだろう…。

あとはツリーが閉じちゃう問題だけか…

◆2006-04-06 13:23 まみお
一番簡単なのは、dtree/dtree.phpでuseCookiesをtrueに変えちゃう方法かな。
次回訪問時も記憶しているかもしれないですが。

◆2006-04-06 16:09 enakalle
こんにちは。いつもまみおさんのプラグインに大変お世話になっているものです。

ツリーメニューを使ってナビゲーションをするブログを作ろうとしていまして、TreeMenuとDtreeを使わせていただいております。

今、2つの問題が発生していましてご相談させていただきたいと思います。

http://math.pisan-dub.jp/co...

1. 上のサイトでDtreeを組み込んでいますが、それで生成されるURLが

http://math.pisan-dub.jp/co...

というようにindex.phpが省略されているために同じディレクトリにおいてあるindex.htmlに飛んでしまいます。

2. 代数>整数論事始>最下層の部分のサブカテゴリの並び順が、整数論事始のサブカテゴリの編集で指定した順番とどうしても違ってしまいます。

お暇なときに何かアドバイスいただければありがたいです。よろしくお願いします。

◆2006-04-06 19:16 藤咲
useCookies:trueでもだめですね…。
これってキャッシュ対策に$randomIDがついてるのが原因なんですよね?
cookieもランダムIDを引っ張るらしく、
cotree20385305914434e8f020931d
cotree529283514434e8ae4268ad
cotree11550699224434e88330fccd
とアクセスするたびに増えております…。

Cookie関連で
this.setCookie('co' + this.obj, str)
とかなっているところを軒並み
this.setCookie('coDtree', str)とかにしちゃえばいいんですかね…。
うーん、なんかスマートじゃないような。

別件ですが、folderLinksっていうconfig項目があるんですね。
おかげで「カテゴリの時には表示しない」ようにはどうすれば…と思っていたのが解決しました(^^

◆2006-04-06 22:22 藤咲
フォントサイズが変わる問題、解決してませんでしたorz
cleanスキンの問題だと思うので、他の要素も絡めてちょっと眺めてみます。すみません。
2006-04-07 08:38 まみお
わーごめん。
なるほど。randomID入ってるモンねぇ。
当然だ。

フォントサイズ問題は、あれ、div#IDname .treeとかいう風に厳密に指定してもダメかなぁ。
id修飾とclass修飾で挙動が変わるんで、その辺は色々試行錯誤が必要だと思う。

◆2006-04-07 13:02 enakalle
お邪魔します。ご相談した件は、

1. dtreedata.phpの17行目の後に次を追加
$blogurl .= 'index.php';
2. dtreedata.phpの80行目付近の二つのSELECT文に"ORDER BY ordid"を追加

でとりあえず解決できました。でも今度はツリーの状態が保存できなくて悩んでいます。あじゃっくすは深いですね。

◆2006-04-07 14:42 まみお
ツリーopen保存の件ですが。
必ずしもツリーをクリックしてページを変遷していくわけではないので、cookie保存してもかえってわかりにくくなるような気がします。

それよりも、urlでカテゴリ(サブカテゴリ)を指定しているときは、そのカテゴリ(サブカテゴリ)をopenしている、という動作の方が良くないですか?
その方が実装も簡単かも。

◆2006-04-07 15:31 藤咲
そうですね、そっちのほうが私もいいと思います。
開いたままって少なかったらいいけど、多いときは結構面倒だと思いますし…。

◆2006-04-07 15:31 まみお
という訳で、urlで指定されたカテゴリ(サブカテゴリ)がある場合にはa.urlselectedクラスを付けてopenする仕様にしてみました。
上の0.92を試してみてください。

(たぶん、これで「保存」は不要なはず)

◆2006-04-07 19:04 藤咲
OKでした(^^

◆2006-04-08 14:39 enakalle
dtreedata.php 102行目:
$cid = requestVar('sid'); → $sid = requestVar('sid');
ですね。

あっさりとしていますがすごい発想だと思います。m(__)m

◆2006-07-06 15:30 Tucker
こんにちわ。まみおさんのプラグインを多数使わせて頂いております。

このDtreeプラグインについて一つ確認させていただきたいのですが、スキン・テンプレート一つで複数ブログを展開すると<%Dtree()%>がブログIDを引っ張ってきてくれず、blogid=1以外のページでDtreeのカテゴリリンクをクリックするとサイトURLが常に?blogid=1の状態になりました。

これを解消するためにdtreedata.phpの55行目と57行目(カテゴリー選択)、92行目と94行目のコメントアウトを削除(サブカテゴリー選択)したらblogid=1以外のページでも正常に動作するようになりました。

…これって合ってますか?(動いてるので正しい変更だとは思いますが…)

◆2006-07-07 03:27 Tucker
…ごめんなさい。
まみおさんじゃなくてnakahara21さんですね…

大変失礼いたしました。

Comments

No comments yet

Add Comment

:

:
: