Развернутое содержание книги.

Главные вкладки

Аватар пользователя iskatel iskatel 5 апреля 2009 в 8:31

Необходимо чтобы при нажатии на ссылку книги выводились развернутые ссылки на главы. Ввел следующий сниппет в ноду книги - все работает, но не знаю как отключит содержание в ноде которое выводится автоматом. А то получается два списка содержания в ноде.
http://drupal.org/node/209336

<?php
$book_top_page = 1;
$levels_deep = 3;
$emulate_book_block = true;

if (!function_exists('book_struct_recurse')){
function book_struct_recurse($nid, $levels_deep, $children, $current_lineage = array(), $emulate_book_block = true) {
$struct = '';
if ($children[$nid] && ($levels_deep > 0 || ($emulate_book_block && in_array($nid, $current_lineage)))) {
$struct = '

    ';
          foreach ($children[$nid] as $key => $node) {
          if ($tree = book_struct_recurse($node->nid, $levels_deep - 1, $children, $current_lineage, $emulate_book_block)) {
          $struct .= '
  • ';
          $struct .= l($node->title, 'node/'. $node->nid);
          $struct .= $tree;
          $struct .= '
  • ';
          }
          else {
          if ($children[$node->nid]){
          $struct .= '

  • '. l($node->title, 'node/'. $node->nid) .'
  • ';
          }
          else {
          $struct .= '

  • '. l($node->title, 'node/'. $node->nid) .'
  • ';
          }
          }
          }
          $struct .= '

';
return $struct;
}
}
}

$current_lineage = array();

$result = db_query(db_rewrite_sql('SELECT n.nid, n.title, n2.nid parent, ml.weight
FROM {node} n
INNER JOIN {book} b ON n.nid = b.nid
INNER JOIN {menu_links} ml ON b.mlid = ml.mlid
INNER JOIN {book} b2 on b2.mlid = ml.plid
INNER JOIN {node} n2 on b2.nid = n2.nid
WHERE n.status =1
ORDER BY ml.weight, n.title'));

while ($node = db_fetch_object($result)) {
if (!$children[$node->parent]) {
$children[$node->parent] = array();
}
array_push($children[$node->parent], $node);

/*  This function is broken, and for my purposes, not needed **********
if (arg(0) == 'node' && is_numeric(arg(1)) && arg(1) == $node->nid) {
  $_temp = book_location($node);
  foreach ($_temp as $key => $val){
    $current_lineage[] = $val->nid;
  }
  $current_lineage[] = arg(1);
}
*/
}

echo book_struct_recurse($book_top_page, $levels_deep, $children, $current_lineage, $emulate_book_block);

?>