Book Navigation Block mit Link zur "Top Level Buchseite"?

am 03.11.2007 - 04:19 Uhr in
Hallo!
Ich würde den Book Navigation Block gerne um einen Link zur 1. Seite (Top Level oder wie immer das richtig heißen mag). Bislang erscheint ja nur der Titel der Top Level Buchseite als Link.
In einem Buch mit nur einer Ebene könnte das relativ einfach sein, werde ich mal ausprobieren, da müßte ich ja nur abfragen, ob es eine Parent Seite gibt und die dann als Link einfügen.
Aber wie mache ich das bei einem Buch mit mehreren Ebenen?
Ich denke dafür brauche ich eine Funktion, die solange nach Parents fragt, bis Parents == 0 ist.
OK soweit in der Theorie, aber wie bekomme ich das in PHP?
- Anmelden oder Registrieren um Kommentare zu schreiben
Lösung ist hier:
am 03.11.2007 - 19:50 Uhr
Ich habe auf drupal.org eine Lösung gefunden:
http://drupal.org/node/159582
Block body:
<?php
$result = db_query(db_rewrite_sql('SELECT n.nid, n.title, b.parent FROM {node} n INNER JOIN {book} b ON n.vid = b.vid WHERE n.nid = %d'), arg(1));
if (db_num_rows($result) > 0) {
$node = db_fetch_object($result);
$path = book_location($node);
$path[] = $node;
$expand = array();
foreach ($path as $key => $node) {
$expand[] = $node->nid;
}
}
$subject = l($path[0]->title, 'node/'. $path[0]->nid);
$content = book_tree($expand[0], 5, $expand);
print '<h3>'. $subject .'</h3>';
print $content;
?>
Input format: PHP code
Show block on specific pages: Show if the following PHP code returns TRUE (PHP-mode, experts only).
Pages:
<?php
// Only display this block when the user is browsing a book:
if (arg(0) == 'node' && is_numeric(arg(1))) {
return TRUE;
}
else {
return FALSE;
}
?>
Was letztlich einer modifizierten Version von book_block http://api.drupal.org/?q=api/function/book_block/5 in einem eigenen Block entspricht ...