2012-02-22 76 views
1

我正在尝试主题我的Drupal网站的用户配置文件形式。我在主题的template.php文件中使用了hook_form_alter。Drupal 7 - 主题用户配置文件形式

该代码与我用于编辑其他表单的代码相同,但出于某种原因,我无法发现它无法工作。

function THEME_NAME_form_alter(&$form, &$form_state, $form_id) { 
    if ($form_id == 'user_profile_form') {  
     $form['current_pass']['#prefix'] = '<div class="loginFormBlock">'; 
     $form['current_pass']['#suffix'] = '</div>'; 
     $form['current_pass']['#size'] = '500'; 
     //$form['actions']['submit'] = array('#type' => 'image_button', '#src' => base_path() . path_to_theme() . '/images/Login.png'); 
    } 
} 

现在注释掉提交按钮部分工作时,它的未评论,但current_pass位什么也不做。 Current_pass是我尝试主题的字段的名称。 THEME_NAME已被主题名称取代。

答:

至于建议我看着$形式排列。

echo '<pre>'; 
print_r($form); 
echo '</pre>'; 

看到current_pass在帐户数组中,并将代码修改为以下,它工作正常。

$form['account']['current_pass']['#size'] = '500'; 

希望这可以帮助别人。

+0

current_pass是一个现有的配置文件字段?尝试调试并转储'$ form ['current_pass']'(在修改之前),看看里面有什么 – soju 2012-02-22 16:04:57

回答

2

我只是想说同样的事情 - 做一个$形式的转储,并确保该字段实际存在 - 如果它确实存在,它仍然不起作用,那么可能会有另一个挂钩在你的和改变之后被调用你的改变。

ps:我仍在使用D6,但是你确定把你的form_alter函数放在正确的地方吗?你的说THEME_NAME_form_alter - 我知道在D6中你必须把它们放在模块层而不是主题层(除非在D7中这已经改变了) - 这可能是你的问题吗?

+0

谢谢。我已将答案添加到未来用户的问题中。 – SpaceBeers 2012-02-22 16:24:26

+0

很高兴有帮助!所以我把它放在D7中,现在已经改变了:D等不及要做一个项目!任何更多的问题都会大声呼喊! – coder4show 2012-02-22 17:38:01