แก้ไขคำถามตามข้อมูลจาก @NoSssweat
โมดูลหนังสือใช้ hook เดียวกันสำหรับบล็อกแผนผังหนังสือและมุมมองดัชนีที่แสดงผลในหน้าหนังสือ
ฉันใช้โค้ดด้านล่างเพื่อส่งคืนคำแนะนำชื่อไฟล์ เพื่อให้ฉันสามารถแทนที่เอาต์พุต 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(&$ตัวแปร) {
ถ้า (isset($ตัวแปร["องค์ประกอบ"]["#id"])) {
$block_id = $ตัวแปร["องค์ประกอบ"]["#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
ฟังก์ชัน uswds_subtheme_theme_suggestions_book_tree__book_toc_180_alter (อาร์เรย์ &$คำแนะนำ, อาร์เรย์ $ตัวแปร) {
ถ้า (isset($variables["attributes"]["region"])) {
$suggestions[] = $variables["theme_hook_original"] "__" . $variables["attributes"]["ภูมิภาค"];
}
}
ความพยายามครั้งที่ 2
ฉันทำด้านล่างและใช้งานได้ แต่ใช้ได้กับบล็อกเริ่มต้นของโมดูลหนังสือเท่านั้น แม้ว่าปลั๊กอินบล็อกโมดูลหนังสืออื่น ๆ ส่วนใหญ่จะใช้ทั้งหมด book-tree.html.twig
// เพิ่มตัวแปรภูมิภาคให้กับบล็อก
ฟังก์ชัน uswds_subtheme_preprocess_block(&$variables) {
ถ้า (isset($ตัวแปร["องค์ประกอบ"]["#id"])) {
$block_id = $ตัวแปร["องค์ประกอบ"]["#id"];
$block = \Drupal\block\Entity\Block::load($block_id);
ถ้า ($ บล็อก) {
$variables["content"]["#attributes"]["region"] = $block->getRegion();
}
}
}
// เพิ่มคำแนะนำเทมเพลตตามชื่อภูมิภาค
ฟังก์ชัน uswds_subtheme_theme_suggestions_alter (อาร์เรย์ &$คำแนะนำ, อาร์เรย์ $ตัวแปร, $hook) {
ถ้า (isset($variables["attributes"]["region"])) {
$suggestions[] = $variables["theme_hook_original"] "__" . $variables["attributes"]["ภูมิภาค"];
}
}