J'aimerais avoir un modèle twig personnalisé pour les plugins de blocs personnalisés de mon module personnalisé.
Mon bloc personnalisé HeaderText contient
public function build() {
return array(
'#title' => 'Test',
'#color' => $this->configuration['color'],
);
}
Il se trouve dans myplugin/src/Plugin/Block/HeaderText.php
J'ai un bloc de modèle - HeaderText.html.twig situé dans myplugin/templates qui ne contient que du code de test
<h1>{{ title }}</h1><p>{{ color }}</p>
Cependant, le modèle n'est pas utilisé. Suite à un guide, j'ai également ajouté ce qui suit à myplugin/myplugin.module
function myplugin_theme($existing, $type, $theme, $path){
return array('myplugin' =>
array(
'variables' => array(
'title' => 'Default title',
'color' => null
),
'template' => 'block--HeaderText'
)
);
}
Ce qui n'a pas fonctionné non plus. Et même si le code précédent fonctionnait, j'ai plusieurs plugins dans ce module et ce code semble s'appliquer à chaque bloc que je ne veux pas faire. J'aimerais que chaque bloc ait un modèle unique.
Ce problème que j'ai rencontré était que je n'avais pas spécifié '#theme' dans le plugin de bloc.
J'ai ajouté
public function build() {
return array(
'#theme' => 'myplugin',
'#title' => 'Test',
'#color' => $this->configuration['color'],
);
}
et ça a marché