【问题标题】:Drupal 7 - Theme the user profile formDrupal 7 - 主题用户配置文件表单
【发布时间】:2026-01-25 08:20:03
【问题描述】:

目前我正在尝试为我的 Drupal 网站的用户个人资料表单设置主题。我在主题的 template.php 文件中使用了 hook_form_alter。

该代码与我用来编辑另一个表单的代码相同,但由于某种原因我无法发现它不起作用。

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 已替换为主题名称。

回答:

按照建议,我查看了 $form 数组。

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

看到 current_pass 在 account 数组中,修改代码如下,效果很好。

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

希望这可以帮助其他人。

【问题讨论】:

  • current_pass 是现有的配置文件字段吗?尝试调试并转储$form['current_pass'](在更改之前)以查看里面有什么

标签: drupal drupal-7 drupal-theming


【解决方案1】:

我只是想说同样的话 - 转储 $form 并确保该字段确实存在 - 如果它确实存在并且它仍然不起作用,那么可能会在您的之后调用另一个挂钩并更改您的变化。

ps:我仍在使用 D6,但您确定将 form_alter 函数放在正确的位置吗?你的说 THEME_NAME_form_alter - 我知道在 D6 中你必须将它们放在模块层而不是主题层(除非这在 D7 中发生了变化???) - 这可能是你的问题吗?

【讨论】:

  • 谢谢。我已将答案添加到未来用户的问题中。
  • 很高兴能帮上忙!所以我把它放在 D7 中,现在已经改变了:D 迫不及待地想在里面做一个项目!再有问题就喊一声!