DrupalBook.org.ua
Готовые решения для сайта на Drupal.фото девушек блондинок
Вывести полное содержание всех книг (book) на сайте в виде иерархии
Редакция: VladSavitsky [24.05.2008 10:25]
Авторы решений:
Темы:
Задача
Вывести полное содержание всех книг (book) на сайте в виде иерархии.
Решение
Полное содержание лучше вывести как отдельную страницу, а не блок, потому что блок имеет как правило небольшие размеры:
- Создаём страницу,
- Вставляем код подходящей версии Друпал,
- Выставляем формат ввода: "PHP",
- Сохраняем.
Drupal 5
<?php
function book_tree_recurse_all($nid, $depth, $children) {
if ($depth > 0) {
if ($children[$nid]) {
foreach ($children[$nid] as $foo => $node) {
if ($tree = book_tree_recurse_all($node->nid, $depth - 0, $children)) {
$output .= '<li class="expanded">';
$output .= l($node->title, 'node/'. $node->nid);
$output .= '<ul>'. $tree .'</ul>';
$output .= '</li>';
} else {
$output .= '<li class="leaf">'. l($node->title, 'node/'. $node->nid) .'</li>';
}
}
}
}
return $output;
}
function book_tree_expanded($parent = 0, $depth = 3) {
$result = db_query(db_rewrite_sql('SELECT n.nid, n.title, b.parent, b.weight FROM {node} n INNER JOIN {book} b ON n.nid = b.nid AND n.vid = b.vid WHERE n.status = 1 AND n.moderate = 0 ORDER BY b.weight, n.title'));
while ($node = db_fetch_object($result)) {
$list = $children[$node->parent] ? $children[$node->parent] : array();
array_push($list, $node);
$children[$node->parent] = $list;
}
if ($tree = book_tree_recurse_all($parent, $depth, $children)) {
return '<div class="menu"><ul>'. $tree .'</ul></div>';
}
}
print book_tree_expanded(0);
?>Drupal 6
<?php
function book_toc_recursive($bid, $pid) {
$sql = "SELECT a.mlid, b.link_path, b.link_title FROM book a INNER JOIN menu_links b ON a.mlid = b.mlid WHERE (a.bid=%d) AND (b.plid=%d) order by a.mlid";
$result = db_query(db_rewrite_sql($sql), $bid, $pid);
if ($result) {
print "<ul>";
while ($data = db_fetch_object($result)) {
print "<li>" . l($data->link_title, $data->link_path) . "</li>";
book_toc_recursive($bid, $data->mlid);
}
print "</ul>";
}
}
$all_books=book_get_books();
foreach ($all_books as $book_id=>$link) {
book_toc_recursive($book_id, 0);
}
?>Использованные материалы
- Вывести развернутое содержание книг в модуле Book в Друпал 6
- Информация. Содержание книги — 1. Стандартный код из модуля Book, только названия страниц книг показываются развёрнутыми.
Полезные ссылки
»
- Страница для печати
- 20 reads
Creative Commons: Attribution-Share Alike 2.5
Данные материалы выложены под лицензией Creative Commons: Attribution-Share Alike 2.5. Это значит, что вы можете распространять, копировать и модифицировать эти произведения при условии упоминания авторства оригинала, и при условии, что они также будут распространяться на условиях этой лицензии (то есть, изменённую работу нельзя защитить копирайтом). Подробнее смотри: http://ru.wikipedia.org/wiki/Creative_Commons