2017-09-28 5 views
0

J'ai un module personnalisé modero_kbo qui crée un bloc personnalisé. J'ai besoin d'afficher ce bloc différemment selon l'endroit où il est placé sur ma page.Drupal 8 Twig - bloc personnalisé - deux modèles de brindilles travaillant troisième n'est pas?

J'ai cette fonction dans mon 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 
    ) 
    ), 
); 
} 

Et dans mon thème coutume fichier .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']; 
    } 
} 

Toutes les 3 suggestions de modèles font leur apparition dans ma source html sur la page. Les deux premiers fonctionnent réellement, le troisième ne fonctionne pas. J'ai tripple vérifié tous les noms de fichiers et l'orthographe.

J'ai 3 fichiers de modèles différents, les deux premiers fonctionnent, le troisième est dans la liste des suggestions, mais n'est pas utilisé pour une raison quelconque?

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

enter image description here

Répondre

0

Une erreur que nous avons trouvé ici est que je ne devrais utiliser le premier tableau dans la fonction modero_kbo_theme().

Le moderosolid_theme_suggestions_modero_kbo_vat_alter modifie ce thème.

Nous ne pouvions pas comprendre pourquoi le 3ème crochet ne fonctionnait pas, nous suspectons que les variables de formulaire pourraient ne pas être disponibles à un moment donné dans le processus. J'ai résolu cela en copiant le bloc et en créant un nouveau bloc avec un modèle personnalisé.