Aller au contenu principal
loading

Drupal module Book et profondeur du sommaire

POSTÉ DANS Drupal 6 TAGS Drupal 6 AUTEUR herve COMMENTAIRES 1

Quand on écrit un "Livre" via le module book de Drupal, on a une génération automatique du menu (sommaire), ou plûtot des enfants d'une page.
Or, on ne peut pas modifier la profondeur de cet affichage, qui affiche donc seulement les enfants directs de la page en cours, mais pas ses "petits-fils" (ou alors je suis preneur de la solution).

Voilà donc la solution pour modifier la profondeur du sommaire : 
1- télécharger le module booktree (dispo en attachement aussi)
2- l'installer et l'activer
3- dans le fichier template.php de votre thème, ajouter le hook template_preprocess_book_navigation(&$variables), avec comme contenu : 

function THEME_preprocess_book_navigation(&$variables) {
  $book_link = $variables['book_link'];

  // Provide extra variables for themers. Not needed by default.
  $variables['book_id'] = $book_link['bid'];
  $variables['book_title'] = check_plain($book_link['link_title']);
  $variables['book_url'] = 'node/' . $book_link['bid'];
  $variables['current_depth'] = $book_link['depth'];

  $variables['tree'] = '';
  if ($book_link['mlid']) {
    $variables['tree'] = book_children($book_link);

    if ($prev = book_prev($book_link)) {
      $prev_href = url($prev['href']);
      drupal_add_link(array('rel' => 'prev', 'href' => $prev_href));
      $variables['prev_url'] = $prev_href;
      $variables['prev_title'] = check_plain($prev['title']);
    }
    if ($book_link['plid'] && $parent = book_link_load($book_link['plid'])) {
      $parent_href = url($parent['href']);
      drupal_add_link(array('rel' => 'up', 'href' => $parent_href));
      $variables['parent_url'] = $parent_href;
      $variables['parent_title'] = check_plain($parent['title']);
    }
    if ($next = book_next($book_link)) {
      $next_href = url($next['href']);
      drupal_add_link(array('rel' => 'next', 'href' => $next_href));
      $variables['next_url'] = $next_href;
      $variables['next_title'] = check_plain($next['title']);
    }
  }

  $variables['has_links'] = FALSE;
  // Link variables to filter for values and set state of the flag variable.
  $links = array('prev_url', 'prev_title', 'parent_url', 'parent_title', 'next_url', 'next_title');
  foreach ($links as $link) {
    if (isset($variables[$link])) {
      // Flag when there is a value.
      $variables['has_links'] = TRUE;
    }
    else {
      // Set empty to prevent notices.
      $variables[$link] = '';
    }
  }
  $variables['booktree'] = booktree_render_tree($book_link['nid']);
}

4- copier le fichier book-navigation.tpl.php dans votre thème, et modifier son contenu comme ceci :
Ligne 33 : remplacer <?php if ($tree || $has_links): ?> par <?php if ($booktree || $has_links): ?>
Ligne 35 : remplacer <?php print $tree; ?> par <?php print $booktree; ?>

Et voilà, le tour est joué...

Tout est en pièce jointe.
 

Fichier attaché Taille
book_tree_deep.zip 10.01 Ko


1 commentaire

Derniers articles

DDEV : obtenir la liste des services
DDEV : obtenir la liste des services Posté le 27 janvier 2021
Partager un répertoire local sous Docker
Partager un répertoire local sous Docker Posté le 27 janvier 2021
Docker et Localhost Mac
Docker et Localhost Mac Posté le 27 janvier 2021
Affichage de la requête SQL d'un db_select
Affichage de la requête SQL d'un db_select Posté le 24 septembre 2020

A propos de Web'Up