Editarea întrebării pe baza informațiilor de la @NoSssweat
Modulul carte folosește același cârlig pentru blocul arborelui cărții și vizualizarea index redată în pagina cărții.
Am folosit codul de mai jos pentru a returna sugestii de nume de fișier, astfel încât să pot suprascrie ieșirea html pentru blocul arborelui cărții într-o anumită regiune - "sidebar-first". Mă așteptam ca codul de mai jos să scoată ceva de genul arbore-cărți--carte-toc-180--sidebar-first.html.twig
. În schimb, doar scuipă o sugestie de nume de fișier care este deja sugerată:
<!-- FILE NAME SUGGESTIONS:
* book-tree--book-toc-180.html.twig
* book-tree--book-toc-180.html.twig
x book-tree.html.twig
-->
Această sugestie de nume de fișier este aceeași pentru conținutul principal de pe pagina cărții. Cum pot viza orice blocuri de arbore de cărți din cadrul bara laterală-mai întâi
regiune?
// Adăugați o variabilă regiune la un bloc.
// http://kristiankaa.dk/article/drupal8-region-specific-menu-theme-hook-suggestion
funcția uswds_subtheme_preprocess_book_tree__book_toc_180(&$variables) {
if (isset($variabile["elemente"]["#id"])) {
$bloc_id = $variabile["elemente"]["#id"];
$bloc = \Drupal\block\Entity\Block::load($block_id);
dacă ($bloc) {
$variables["conținut"]["#atribute"]["regiune"] = $block->getRegion();
}
}
}
// adaugă o sugestie de șablon bazată pe numele regiunii
// http://kristiankaa.dk/article/drupal8-region-specific-menu-theme-hook-suggestion
funcția uswds_subtheme_theme_suggestions_book_tree__book_toc_180_alter(array &$suggestions, array $variables) {
if (isset($variabile["atribute"]["regiune"])) {
$suggestions[] = $variables["theme_hook_original"] . „__” . $variables["atribute"]["regiune"];
}
}
a 2-a încercare
Am făcut cele de mai jos și funcționează, dar funcționează numai pentru blocul implicit al modulului de carte, deși orice alt plugin de bloc al modulului de carte folosește în mare parte copac-carte.html.creugă
// Adăugați o variabilă regiune la un bloc.
funcția uswds_subtheme_preprocess_block(&$variabile) {
if (isset($variabile["elemente"]["#id"])) {
$bloc_id = $variabile["elemente"]["#id"];
$bloc = \Drupal\block\Entity\Block::load($block_id);
dacă ($bloc) {
$variables["conținut"]["#atribute"]["regiune"] = $block->getRegion();
}
}
}
// adaugă o sugestie de șablon bazată pe numele regiunii
function uswds_subtheme_theme_suggestions_alter(matrice &$sugestii, matrice $variabile, $hook) {
if (isset($variabile["atribute"]["regiune"])) {
$suggestions[] = $variables["theme_hook_original"] . „__” . $variables["atribute"]["regiune"];
}
}