/ / Drupal 8 Twig - користувальницький блок - два шаблони гілок, що працюють третій не? - drupal, twig, drupal-8, drupal-тематизація

Drupal 8 Twig - користувальницький блок - робота третього шаблону двох гірок не є? - Друпал, гілочка, Друпал-8, Друпал-темінг

У мене є спеціальний модуль modero_kbo, який створює користувальницький блок. Мені потрібно відобразити цей блок по-різному залежно від того, де він розміщений на моїй сторінці.

Я маю цю функцію в моєму modero_kbo.module:

function modero_kbo_theme() {
return array(
"modero_kbo_vat" => array(
"variables" => array(
"form" => NULL
)
),
"modero_kbo__landing_page" => array(
"variables" => array(
"form" => NULL
)
),
"modero_kbo__landing_page__modero_kbo_form_2.html.twig" => array(
"variables" => array(
"form" => NULL
)
),
);
}

А це у моєму власному файлі .theme теми:

/**
* Implements hook_theme_suggestions_HOOK_alter() for modero_kbo.html.twig.
*/
function moderosolid_theme_suggestions_modero_kbo_vat_alter(array &$suggestions, array $variables) {
if($node = Drupal::routeMatch()->getParameter("node")){
$suggestions[] = "modero_kbo__" . $node->bundle();
$suggestions[] = "modero_kbo__" . $node->bundle() . "__" . $variables["form"]["#attributes"]["data-drupal-selector"];
}
}

Усі 3 пропозиції шаблонів відображаються в моєму HTML-джерелі на сторінці. Перші два дійсно працюють, третій не працює. Я перевірив всі імена файлів і орфографію.

У мене є 3 різні файли шаблонів, перші два працюють, третій відображається в списку пропозицій, але не використовується з якоїсь причини?

modero-kbo-vat.html.twig
modero-kbo--landing-page.html.twig
modero-kbo--landing-page--modero-kbo-form-2.html.twig

введіть опис зображення тут

Відповіді:

0 для відповіді № 1

Однією помилкою, яку ми виявили тут, є те, що я повинен використовувати тільки перший масив у modero_kbo_theme() функція

The moderosolid_theme_suggestions_modero_kbo_vat_alter змінює цю тему.

Ми не могли зрозуміти, чому 3-й гак не працює, ми підозрюємо, що змінні форми можуть бути недоступні в певний момент процесу.

Я вирішив це, скопіювавши блок і створивши новий блок з власним шаблоном.