如何在Drupal 7中的hook_disable上隐藏自定义用户配置文件字段?

时间:2015-02-13 01:44:34

标签: drupal-7 drupal-modules

我创建了一个向用户个人资料添加字段的模块。我使用field_create_field和field_create_instance来做到这一点。当我禁用模块时,我希望该字段不再出现在用户配置文件中,但我不想破坏它。我希望能够启用该模块并显示该字段,并且数据仍然保留在最初输入的位置。谁能告诉我如何实现这一目标?

以下是我用来创建字段的代码:

  $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(
    ),
  );

3 个答案:

答案 0 :(得分:0)

当您使用drupal实体(如用户,节点等)创建字段时,该实体将自动应用crud操作。

因为你已经使用api来&#34; field_create_field&#34;然后,当您卸载模块时,它会使用实体vise的api自动创建字段,并删除其删除字段。

答案 1 :(得分:0)

首先告诉我,当您卸载自定义模块时,您的自定义字段会从配置文件中删除。如果是,那么处理您的用例很困难。如果没有那么在Drupal的系统表中你得到你的模块的状态,无论它是禁用还是启用如果状态是0然后使用形式的用户配置文件的隐藏和隐藏字段

答案 2 :(得分:0)

我无法完全达到我想要的效果,但我最终安装了字段额外的小部件模块并将字段完全隐藏在编辑表单上。然后,我使用hook menu alter创建一个本地任务选项卡,然后在该选项卡上显示该字段。