Drupal 7 hook_theme () не загружает файл шаблона - PullRequest
3 голосов
/ 25 октября 2011

Я пытаюсь получить очень простой модуль для загрузки файла шаблона с помощью drupal's hook_theme ().Это так просто, как вы можете себе представить.

function sectionheader_theme ( $existing, $type, $theme, $path ) {
  return array(
    'sectionheader' => array(
      'variables' => array( 'foo' => NULL ),
      'template' => 'sectionheader',
    ),
  );
}

Шаблон называется sectionheader.tpl.php.Остальная часть модуля работает как положено.Я очистил кеш Drupal.Я вставил оператор die ("Debug") в эту функцию, и он выполняется , но мой шаблон просто не вызывается, никогда.Шаблон просто содержит некоторый отладочный текст, так что я вижу, что он работает, но не виден ни в одном представлении модуля.

Я сделал все в каждом примере, который я могу найти, я дажескопировал и вставил код непосредственно из других модулей, и этот шаблон все равно не загрузится.

Ответы [ 3 ]

5 голосов
/ 28 октября 2011

Обратите внимание: если вы поместили файл шаблона в подпапку / theme в директории вашего модуля (что является наилучшей практикой), вам также необходимо указать путь к файлу в hook_theme

function example_theme($existing, $type, $theme, $path) {
  return array(
    'example_function' => array(
      'variables' => array('var1' => array(), 'var2' => array(), 'var3' => array()),
      'template' => 'example-template',
      'path' => drupal_get_path('module', 'example').'/theme'
    ), 
  );  
}
1 голос
/ 24 февраля 2014

У меня была та же проблема, что и у вас, и я решил ее, очистив кеш, выполнил поиск в базе данных и в столбце cid кеша таблиц получил что-то вроде "theme_registry: *" и удалил их,это работает.

0 голосов
/ 15 июля 2012

Как уже упоминалось в комментарии выше, я столкнулся с той же проблемой.В модуле разработки все работало нормально, но когда я просто скопировал этот модуль в новый, который станет моим рабочим модулем, файл шаблона больше не работал.Я перепробовал все вышеизложенное без удачи.Исходный модуль был отключен, и был включен только новый.

Я даже вернулся, чтобы посмотреть, может ли тема оригинального модуля работать, и это не так.хмммм.

Когда я изменил название темы, она внезапно начала работать: файл шаблона был найден и отображен.

Итак, похоже, что любой модуль, который регистрирует имя темы -- даже если она отключена - по-прежнему регистрирует тему И кажется, что имена тем должны быть уникальными во всей системе.

Ответ: ищите то же имя темы, объявленное в других модулях

...