Как оформить регистрационную форму в drupal 7? - PullRequest
0 голосов
/ 23 декабря 2011

Я использую drupal 7 и хочу настроить форму регистрации и форму входа пользователя. Я использую этот код в template.tpl.php:

function mytheme_theme($existing, $type, $theme, $path){
  $hooks['user_login']=array(
    'render element'=>'form',
    'template' =>'templates/user-login',
  );
  $hooks['user_register']=array(
    'render element'=>'form',
    'template' =>'templates/user-register',
  );
  $hooks['user_pass']=array(
    'render element'=>'form',
    'template' =>'templates/user-pass',
  );
  return $hooks;
}

Странно, что user_login и user_pass работают, а user_register - нет. кто-то, пожалуйста, дайте мне знать, почему и показать мне, как решить эту проблему спасибо за вашу помощь.

1 Ответ

3 голосов
/ 23 декабря 2011

Это неправильный способ переопределения тем в Drupal, то, что вы делаете там, заменяет оригинальные элементы, предоставленные ядром Drupal, в реестре тем.Делая это, вы получите непредсказуемые результаты, которые объяснят, почему пара из них работает, а другая нет.

Лучший способ переопределить тему - использовать соглашение об именах функций, предоставленное Drupal, MYTHEME_theme_name(&$vars).Таким образом, в вашем случае три функции будут выглядеть следующим образом:

function MYTHEME_user_login(&$vars) {

}

function MYTHEME_user_register(&$vars) {

}

function MYTHEME_user_pass(&$vars) {

}

Если вы хотите изменить файлы шаблонов существующих тем, вам следует использовать hook_theme_registry_alter():

function MYTHEME_theme_registry_alter(&$theme_registry) {
  $theme_registry['user_login'] = array(
    'render element'=>'form',
    'template' =>'templates/user-login'
  );
}

Убедитесь, что вы очищаете кеши Drupal каждый раз, когда добавляете или меняете хук, иначе изменения не будут отражены на вашем сайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...