2011-12-23 2 views
0

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

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» нет. кто-то, пожалуйста, дайте мне знать, почему и покажите мне, как его решить. Спасибо за помощь.

ответ

3

Это неправильный способ переопределить темы в 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 в любой время, которое вы добавляете или меняете крючок, или изменения не отражаются на вашем сайте.

+0

Спасибо за ваш ответ. О MyTHEME_theme_name (& $ vars), на самом деле я этого не знаю. не могли бы вы выслать мне ссылку? о hook_theme_registry_alter, я делаю именно то, что вы мне говорите. но он все еще не работает. – NamPham