Drupal 7 如何在Drupal 7中的hook_disable上隐藏自定义用户配置文件字段?
我创建了一个模块,在用户配置文件中添加了一个字段。我使用field\u create\u field和field\u create\u实例来完成这项工作。当我禁用该模块时,我希望该字段不再显示在用户配置文件上,但我不想销毁它。我希望能够启用该模块,并有字段显示和数据仍然存在,因为最初输入。有人能告诉我如何做到这一点吗 以下是我用来创建字段的代码:Drupal 7 如何在Drupal 7中的hook_disable上隐藏自定义用户配置文件字段?,drupal-7,drupal-modules,Drupal 7,Drupal Modules,我创建了一个模块,在用户配置文件中添加了一个字段。我使用field\u create\u field和field\u create\u实例来完成这项工作。当我禁用该模块时,我希望该字段不再显示在用户配置文件上,但我不想销毁它。我希望能够启用该模块,并有字段显示和数据仍然存在,因为最初输入。有人能告诉我如何做到这一点吗 以下是我用来创建字段的代码: $field = array( 'field_name' => $field_name, 'type' =&
$field = array(
'field_name' => $field_name,
'type' => 'text',
'visibility' => 1,
'category' => 'API',
);
$field = field_create_field($field);
$field_instance = array(
'field_name' => $field_name,
'entity_type' => 'user',
'bundle' => 'user',
'label' => t('API Token'),
'cardinality' => 1,
'translatable' => 0,
'description' => t('By using this API token, you agree to the site <a href="/about/site-policies/terms-and-conditions">Terms and Conditions</a> and to acknowledge that your submission does not include protected health information or personal identifiers.'),
'widget' => array(
'type' => 'text_textfield',
'weight' => 10,
),
'formatter' => array(
'label' => t('field formatter label'),
'format' => 'text_default'
),
'settings' => array(
),
);
当您使用drupal实体(如用户、节点等)创建字段时,将自动应用该实体上的crud操作
由于您已使用api创建字段字段,因此在卸载模块时,它会使用实体api自动创建字段,而不是删除字段。首先告诉我您何时卸载自定义模块,然后从配置文件中删除自定义字段。。?如果是,那么很难处理您的用例。如果否,则在Drupal的系统表中,您将获得模块的状态,无论是禁用还是启用,如果状态为0,则从用户配置文件的alter hook和hide field使用。我无法完全实现我想要的,但我最终安装了field extra widgets模块,并将字段完全隐藏在编辑表单上。然后,我使用hook menu alter创建了一个本地任务选项卡,并在该选项卡上显示该字段。感谢您的回复,但我不相信我理解您的答案。你是说我不能隐藏它是因为我创造它的方式吗?如果我以不同的方式创建它,它会自动隐藏吗?记住,我只想在模块被禁用时隐藏它,而不是删除它。我希望它在模块重新启用时重新出现。再次感谢您的帮助。当我禁用模块时,自定义字段不会被删除,但当我卸载模块时,我使用的是字段\删除\实例,因此,是的,它会从配置文件中删除。我将把hook\u form\u alter函数放在哪里?我需要创建另一个模块来保存它吗?我希望我可以在hook_disable上调用一些东西,以某种方式将字段设置为hidden或disabled,直到我在hook_enable上反转它之后才能再次显示它。这样,我的模块就可以处理所有的事情。再次感谢您的帮助。另外,现在更改模块还不算太晚。如果有更好的方法来创建字段,我可以很容易地做到。我刚刚在Drupal7字段API上观看了Drupalize Me视频系列。我要重新开始。完成后,我将在这里发布我的解决方案。