2011-12-23 150 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 2011-12-24 02:16:11