Drupal 7 如何在drupal 7中设置注册表单的主题?

Drupal 7 如何在drupal 7中设置注册表单的主题?,drupal-7,Drupal 7,我正在使用Drupal7,我想定制注册表单和用户登录表单。 我在template.tpl.php中使用以下代码: function mytheme_theme($existing, $type, $theme, $path){ $hooks['user_login']=array( 'render element'=>'form', 'template' =>'templates/user-login', ); $hooks['user_register'

我正在使用Drupal7,我想定制注册表单和用户登录表单。 我在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;
}
奇怪的是,“用户登录”和“用户通行证”是有效的,而“用户注册”不是。 有人请让我知道为什么,并告诉我如何解决它。
感谢您的帮助。

这是在Drupal中覆盖主题的错误方法,您在那里做的是替换主题注册表中Drupal core提供的原始项目。这样做你会得到不可预测的结果,这就解释了为什么其中有两个有效,而有一个无效

覆盖主题的最佳方法是使用Drupal提供的函数命名约定,
MYTHEME\u theme\u name(&$vars)
。在你的例子中,这三个函数是这样的

function MYTHEME_user_login(&$vars) {

}

function MYTHEME_user_register(&$vars) {

}

function MYTHEME_user_pass(&$vars) {

}
如果确实要更改现有主题的模板文件,则应使用:


确保在添加或更改挂钩时清除Drupal的缓存,否则更改不会反映在站点中。

这是覆盖Drupal中主题的错误方法,您在那里做的是替换主题注册表中Drupal core提供的原始项。这样做你会得到不可预测的结果,这就解释了为什么其中有两个有效,而有一个无效

覆盖主题的最佳方法是使用Drupal提供的函数命名约定,
MYTHEME\u theme\u name(&$vars)
。在你的例子中,这三个函数是这样的

function MYTHEME_user_login(&$vars) {

}

function MYTHEME_user_register(&$vars) {

}

function MYTHEME_user_pass(&$vars) {

}
如果确实要更改现有主题的模板文件,则应使用:


确保在添加或更改挂钩时清除Drupal的缓存,否则更改不会反映在您的网站上。

谢谢您的回复。关于MyTHEME_主题名称(&$vars),实际上我不知道。你能给我发一个关于它的链接吗?关于hook\u theme\u registry\u alter,我完全按照你说的做。但是还是不行。谢谢你的回复。关于MyTHEME_主题名称(&$vars),实际上我不知道。你能给我发一个关于它的链接吗?关于hook\u theme\u registry\u alter,我完全按照你说的做。但它仍然不起作用。