Редактирование вопроса на основе информации от @NoSssweat
Модуль книги использует один и тот же хук для блока дерева книги и отображаемого индексного представления на странице книги.
Я использовал приведенный ниже код для возврата предложений имени файла, чтобы я мог переопределить вывод html для блока дерева книг в определенном регионе - «сначала боковая панель». Я ожидал, что приведенный ниже код выдаст что-то вроде book-tree--book-toc-180--sidebar-first.html.twig. Вместо этого он просто выдает предложение имени файла, которое уже предлагалось:
<!-- FILE NAME SUGGESTIONS:
   * book-tree--book-toc-180.html.twig
   * book-tree--book-toc-180.html.twig
   x book-tree.html.twig
-->
Это предложение имени файла одинаково для основного содержимого на странице книги. Как я могу настроить таргетинг на любые блоки дерева книг в боковая панель-первая область?
// Добавляем региональную переменную в блок.
// http://kristiankaa.dk/article/drupal8-region-specific-menu-theme-hook-suggestion
функция uswds_subtheme_preprocess_book_tree__book_toc_180(&$variables) {
    если (isset($variables["элементы"]["#id"])) {
        $block_id = $variables["элементы"]["#id"];
        $block = \Drupal\block\Entity\Block::load($block_id);
        если ($ блок) {
            $variables["content"]["#attributes"]["region"] = $block->getRegion();
        }
    }
}
// добавить предложение шаблона на основе названия региона
// http://kristiankaa.dk/article/drupal8-region-specific-menu-theme-hook-suggestion
function uswds_subtheme_theme_suggestions_book_tree__book_toc_180_alter (массив &$предложений, массив $переменных) {
    если (isset($variables["атрибуты"]["регион"])) {
        $suggestions[] = $variables["theme_hook_original"] . "__" . $variables["атрибуты"]["регион"];
    }
}
2-я попытка
Я сделал следующее, и это работает, но работает только для блока по умолчанию модуля книги, хотя все остальные плагины блока книжного модуля в основном используют книга-tree.html.twig
// Добавляем региональную переменную в блок.
функция uswds_subtheme_preprocess_block(&$variables) {
  если (isset($variables["элементы"]["#id"])) {
    $block_id = $variables["элементы"]["#id"];
    $block = \Drupal\block\Entity\Block::load($block_id);
    если ($ блок) {
      $variables["content"]["#attributes"]["region"] = $block->getRegion();
    }
  }
}
// добавить предложение шаблона на основе названия региона
function uswds_subtheme_theme_suggestions_alter (массив и $ предложения, массив $ переменных, $ крючок) {
  если (isset($variables["атрибуты"]["регион"])) {
    $suggestions[] = $variables["theme_hook_original"] . "__" . $variables["атрибуты"]["регион"];
  }
}