Je veux créer mon bloc personnalisé avec du contenu personnalisé dans Drupal 8, au début je crée un bloc avec juste du texte simple dessus, et je travaille correctement, mon problème est comment puis-je lui passer ma variable personnalisée? J'ai vu un tutoriel à ce sujet, mon nom de module est tcdev
et c'est le contenu du .module
fichier.
function tcdev_theme($existing, $type, $theme, $path) {
return array('tcdev' =>
array(
'variables' => array(
'title' => 'Default title',
'description' => null
),
'template' => 'block--sliderblock'
)
);
}
et mon SliderBlock.php
namespace Drupal\tcdev\Plugin\Block;
use Drupal\Core\block\BlockBase;
/**
* Provides a 'SliderBlock' block.
*
* @Block(
* id = "slider_block",
* admin_label = @Translation("Slider Block"),
* )
*/
class SliderBlock extends BlockBase{
/**
* {@inheritdoc}
*/
public function build(){
return array(
'#title' => 'my title ',
'#description' => 'my custom desc'
);
}
}
et enfin mon fichier modèle block--sliderblock.html.twig
<h2>My Custom Block{{ title }}-{{ description }}</h2>
Mais le résultat n'est que "Mon bloc personnalisé". Le problème est que les variables ne sont pas transmises au fichier modèle, où est ma faute?
apprécier toute aide
block--sliderblock.html.twig
rendu, le problème est de savoir comment lui passer ma variable !!!? que me proposez-vous selon mon code. ? tnx pour votre attentionblock--sliderblock.html.twig
rendu, car vous avez utilisé le nom d'une suggestion de thème, cela s'afficherait même si le bloc était totalement vide, vous pouvez essayer ceci)block--sliderblock.html.twig
et rien ne lui est passé. J'active les informations de débogage et les informations de débogage sont<!-- END OUTPUT from 'themes/bootstrap/templates/block/block--system-branding-block.html.twig' <!-- FILE NAME SUGGESTIONS: x block--sliderblock.html.twig * block--slider-block.html.twig * block--tcdev.html.twig * block.html.twig --> <!-- BEGIN OUTPUT from 'themes/gttc_2016/templates/block--sliderblock.html.twig' --> <h2>Block-</h2>
block--sliderblock.html.twig
. Ce modèle fonctionne avec son propre ensemble de variables. (Si vous souhaitez utiliser cette brindille, vous devrez le copier à partir du thème principal ou de base et vous verrez alors quelles variables sont à l'intérieur). Vos variables définies dans le tableau de rendu de la fonction de construction se retrouveront danstcdev.html.twig
. Avez-vous créé ce fichier de brindille?Pour que je trouve, vous voulez écraser un modèle de bloc par défaut avec un modèle de bloc (module) personnalisé, puis lui passer vos variables, tout d'abord vous devez vous assurer d'écraser correctement votre modèle car votre modèle de bloc actuel semble sorti de votre Répertoire de thème (pas de module):
Pour ce faire, vous devez d'abord créer un répertoire appelé
templates/
dans la racine de vos modules, puis y placer votre modèle.Faites maintenant savoir à Drupal que vous stockez le modèle dans votre module. en
your_module.module
ajouter cette fonction:Enfin, faites attention à l'endroit où vous placez votre fichier de brindilles et à son nom. Créez un répertoire de modèles dans le répertoire de votre module et remplacez le
_
dans le nom de la fonction de thème par-
:mymodule-block.html.twig
N'oubliez pas de vider le cache.
Avec l'aide de la réponse écrite par
Nicensin
dans ce post:Drupal 8 bloc personnalisé (module) créer un fichier de modèle de brindille
la source
J'en suis arrivé là aussi. Les variables ne semblent pas être transmises au modèle de bloc. J'ai presque le même code que vous, dans mon cas, j'ai activé le débogage des brindilles et désactivé le cache dans services.yml. Même en effaçant le cache, je rencontrais ce problème, mais j'ai été résolu une fois que j'ai activé cette configuration dans mon environnement de développement.
la source