Je construis un module Drupal 7 pour créer un type de champ sur mesure. J'ai implémenté tous les crochets requis. Ma hook_field_formatter_view()
fonction ressemble à ceci:
function MYMODULE_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
switch ($display['type']) {
case 'default':
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#theme' => 'test',
'#item' => $item,
);
}
break;
}
return $element;
}
J'ai ensuite défini la theme()
fonction ci-dessous:
function theme_test($variables) {
return '<h1>Hello World</h1>';
}
Mais quand je regarde la page, rien n'est sorti. Si je regarde les entrées récentes du journal, je vois ce message:
Theme key 'test' not found.
Si je change ma valeur '#theme' du tableau de rendu MYMODULE_field_formatter_view en une fonction de thème intégrée comme 'item_list' cela fonctionne. Mais pour une raison quelconque, ma fonction de thème personnalisé n'est pas récupérée.
J'ai reconstruit le registre de thèmes des centaines de fois et effacé les caches.
Vous devez définir la fonction de thème dans
hook_theme
, puis vider le cache.la source
J'étais confronté au même problème où ma fonction de thème personnalisé n'était jamais appelée dans mon modèle, même si elle était enregistrée. Lorsque je suis passé à un autre thème, cela a fonctionné.
Ma solution consistait à renommer le thème en «quelque chose_de_thème», car j'ai fait une erreur stupide et j'avais déjà un module nommé «quelque chose».
Le module et le thème ne doivent jamais avoir le même nom , car cela entraîne une collision qui provoque un comportement inattendu et une substitution de hook.
la source