Редактирование вопроса на основе информации от @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["атрибуты"]["регион"];
}
}