web-dev-qa-db-fra.com

Twig Template for a Block Block Plugin

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.

6
Matt

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é

11
Matt