Estou construindo um módulo Drupal 7 para criar um tipo de campo sob medida. Eu implementei todos os ganchos necessários. Minha hook_field_formatter_view()
função é assim:
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;
}
Eu defini a theme()
função abaixo:
function theme_test($variables) {
return '<h1>Hello World</h1>';
}
Mas quando visualizo a página, nada é produzido. Se eu olhar as entradas de log recentes, vejo esta mensagem:
Theme key 'test' not found.
Se eu alterar meu valor MYMODULE_field_formatter_view da matriz de renderização '#theme' para uma função de tema incorporada como 'item_list', ele funcionará. Mas, por algum motivo, minha função de tema personalizado não está sendo selecionada.
Eu reconstruí o registro do tema centenas de vezes e limpei os caches.
Você precisa definir a função de tema
hook_theme
e limpar o cache.fonte
Eu estava enfrentando o mesmo problema em que minha função de tema personalizado nunca era chamada no meu modelo, mesmo que estivesse registrada. Quando mudei para outro tema, funcionou.
Minha solução foi renomear o tema para 'something_theme', porque cometi um erro estúpido e já tinha o módulo chamado 'something'.
O módulo e o tema nunca devem ter o mesmo nome , pois levam à colisão que causa comportamento inesperado e anulação do gancho.
fonte