Chỉnh sửa câu hỏi dựa trên thông tin từ @NoSssweat
Mô-đun sách sử dụng cùng một hook cho khối cây sách và chế độ xem chỉ mục được hiển thị trong trang sách.
Tôi đã sử dụng đoạn mã dưới đây để trả về các đề xuất tên tệp để tôi có thể ghi đè đầu ra html cho khối cây sách ở một vùng cụ thể - "thanh bên đầu tiên". Tôi mong đợi đoạn mã dưới đây sẽ phun ra một cái gì đó như book-tree--book-toc-180--sidebar-first.html.twig
. Thay vào đó, nó chỉ đưa ra gợi ý tên tệp đã được gợi ý:
<!-- FILE NAME SUGGESTIONS:
* book-tree--book-toc-180.html.twig
* book-tree--book-toc-180.html.twig
x book-tree.html.twig
-->
Gợi ý tên tệp này giống với nội dung chính trên trang sách. Làm cách nào tôi có thể nhắm mục tiêu bất kỳ khối cây sách nào trong thanh bên đầu tiên
khu vực?
// Thêm biến vùng vào khối.
// http://kristiankaa.dk/article/drupal8-region-specific-menu-theme-hook-suggestion
function uswds_subtheme_pre process_book_tree__book_toc_180(&$variables) {
if (isset($variables["elements"]["#id"])) {
$block_id = $variables["elements"]["#id"];
$block = \Drupal\block\Entity\Block::load($block_id);
nếu ($khối) {
$variables["content"]["#attributes"]["region"] = $block->getRegion();
}
}
}
// thêm đề xuất mẫu dựa trên tên khu vực
// http://kristiankaa.dk/article/drupal8-region-specific-menu-theme-hook-suggestion
function uswds_subtheme_theme_suggestions_book_tree__book_toc_180_alter(mảng &$suggestions, mảng $variables) {
if (isset($variables["attributes"]["region"])) {
$suggestions[] = $variables["theme_hook_original"] . "__" . $variables["thuộc tính"]["khu vực"];
}
}
lần thử thứ 2
Tôi đã làm như bên dưới và nó hoạt động nhưng nó chỉ hoạt động đối với khối mặc định của mô-đun sách, mặc dù bất kỳ plugin khối mô-đun sách nào khác hầu hết đều sử dụng sách-tree.html.twig
// Thêm biến vùng vào khối.
function uswds_subtheme_pre process_block(&$variables) {
if (isset($variables["elements"]["#id"])) {
$block_id = $variables["elements"]["#id"];
$block = \Drupal\block\Entity\Block::load($block_id);
nếu ($khối) {
$variables["content"]["#attributes"]["region"] = $block->getRegion();
}
}
}
// thêm đề xuất mẫu dựa trên tên khu vực
function uswds_subtheme_theme_suggestions_alter(mảng &$suggestions, mảng $variables, $hook) {
if (isset($variables["attributes"]["region"])) {
$suggestions[] = $variables["theme_hook_original"] . "__" . $variables["thuộc tính"]["khu vực"];
}
}