Как заставить модуль Drupal 7 использовать шаблон .tpl.php в папке темы - PullRequest
4 голосов
/ 05 июня 2011

Я создал модуль для Drupal 7, в котором есть функция hook_theme, которая говорит ему использовать шаблон usertemp.tpl.php.У меня есть шаблон, расположенный в папке модуля, а также в папке темы.Проблема в том, что функция забирает ТОЛЬКО шаблон из папки модуля, а не из папки темы.Я неоднократно очищал кеши и искал предыдущие ответы, но ничего не помогало.В чем может быть проблема?

Мой код для hook_theme выглядит следующим образом:

function usuar_theme() {
  return array(
    'usuarbuild' => array(
        'variables' => array('profilesloaded' => array()),
        'template' => 'usertemp',
     ),
  );
}

Остальная часть кода модуля выглядит так:

function usuar_menu() {
    $items['userx'] = array(
       'title' => 'User page',
       'description' => 'User page',
       'page callback' => 'usuar_exe',
       'access callback' => TRUE,
       'type' => MENU_CALLBACK,
     );
     return $items;
}


function usuar_exe($id) {
    $ar = array('uid' => $id, 'profilesloaded' => profile2_load_by_user($id));
    return theme('usuarbuild', array('collected' => $ar));
}

function theme_usuarbuild($variables) {
  return $variables['collected'];
}

1 Ответ

8 голосов
/ 05 июня 2011

Это сложный вопрос, но ... ваша тема должна соответствовать имени вашего шаблона.Странно, но я проверил это на своем локальном компьютере, и это сработало, как только я настроил его таким образом.Итак ... измените свой hook_theme () на:

function usuar_theme() {
  return array(
    'usuarbuild' => array(
        'variables' => array('profilesloaded' => array()),
        'template' => 'usuarbuild',
     ),
  );
}

и измените файл tpl.php на usuarbuild.tpl.php (или измените все на usertemp)Должен работать после этого.

...