您在這裡

顯示文件(book)的目錄

charlesc's 的頭像
charlesc 在 2006-04-04 (二) 18:29 發表

前陣子Jimmy給我一個程式碼,可以用來顯示某文件底下的目錄(b.parent是該文件的nid):

<div class="subpage">
<?php
$result = db_query('SELECT n.nid, n.title, b.parent FROM {node} n INNER JOIN {book} b ON n.vid = b.vid WHERE b.parent = 2 order by n.changed');
while( $n = db_fetch_object($result)){
$output .= '<h3>'.l($n->title, "node/$n->nid").'</h3>';
$output .= book_tree($n->nid, 5);
}
print $output;
?>
</div>

現在的手冊區,就是用這小程式來列出所有文件。
由於這比原本文件頁下方預設的目錄要有彈性,最近在工作上也派上用場,順便把原本的目錄區塊,用CSS隱藏起來,讓UE更順暢:

.book-navigation ul.menu {display:none;}

感謝Jimmy~

TKY最近也在編寫手冊,看到這段程式碼,也想用一下。
不過複製回去,並在手冊第一頁以php輸入格式發佈後,卻沒有看到和本站一樣的效果。應該說,根本沒有顯示什麼東西出來。

想說會不會是版本的問題?這段程式碼需要根據版本升級嗎?

TKY

tky

TKY後來仔細看了一下程式碼,原來要指定parent的nod id才會正確顯示。太急了,忘了注意這點。

現在已經可以顯示出TKY想顯示的手冊頁面了。不過還想請教一下,如果TKY想要列出所有的樹狀圖,應該要更改那個部分呢?因為目前的手冊首頁只顯示到第二層而已。

大概是$output .= book_tree($n->nid, 5);這個部分吧?但TKY改了一下數值,沒有任何的變化說。

想要列出完整書目的
TKY

tky

稍微改了一下,这样就可以直接用,不用动CSS了,注意修改b.parent的值,要看所有的book可以设成0

    <?php

    $result = db_query('SELECT n.nid, n.title, b.parent FROM {node} n INNER JOIN {book} b ON n.vid = b.vid WHERE b.parent = 1163 order by n.changed');
    while( $n = db_fetch_object($result)){
    $output .= '

  • '.l($n->title, "node/$n->nid").'
  • ';
    $output .= book_tree($n->nid, 5);
    }
    print $output;

    ?>

過了這麼久...又要來炒冷飯了
真是不好意思 orz

關於上面的程式碼
有幾個問題想請教
(我對nid這名詞的意思不太了解 ^^")
1.
指定哪一個book 是改 b.parent
請問
如果那本book 是 node/1
我就把它改成 node/1 .parent 這樣嗎
或是
那本book叫 apple
我就把它改成 apple.parent
那個b是指book第一頁的name嗎

2.
如果是照上述方法改動
那是把所有的"b"都改成我指定的book name嗎

3.
截取長雲的程式碼中的一段
"b.vid WHERE b.parent = 1163"
目前我是依我的第一個和第二個問題所述下去改
但是無法顯示book tree
必須將以上的1163改成0
使它顯示所有book的book tree才能顯示book tree的效果
這個地方
我連問都不知道該怎麼問了....
我只想顯示單一書目 不知道是哪一步出問題了

4.
截取長雲的程式碼中的一段
"SELECT n.nid, n.title"
想請問這裡的n指的是什麼意思呢
這問題好像是程式語言的問題 ^^"

麻煩各位先進了
謝謝 ^^