Я создаю модуль Drupal 7 для создания сделанного на заказ типа поля. Я реализовал все необходимые хуки. Моя hook_field_formatter_view()
функция выглядит так:
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;
}
Затем я определил theme()
функцию ниже:
function theme_test($variables) {
return '<h1>Hello World</h1>';
}
Но когда я просматриваю страницу, ничего не выводится. Если я смотрю на последние записи журнала, я вижу это сообщение:
Theme key 'test' not found.
Если я изменю значение моего #Meme массива рендеринга массива MYMODULE_field_formatter_view на встроенную функцию темы, такую как item_list, это сработает. Но по какой-то причине моя пользовательская функция темы не используется.
Я перестраивал реестр тем сотни раз, а также очищал кеши.
Вам нужно определить функцию темы
hook_theme
и затем очистить кеш.источник
Я столкнулся с той же проблемой, когда моя пользовательская функция темы никогда не вызывалась в моем шаблоне, даже если она была зарегистрирована. Когда я переключился на другую тему, это сработало.
Моим решением было переименование темы в «thing_theme », потому что я допустил глупую ошибку и уже имел модуль с именем« что-то ».
Модуль и тема никогда не должны иметь одно и то же имя , потому что это приводит к коллизии, которая вызывает неожиданное поведение и переопределение хука.
источник