如何在Drupal 7中以编程方式添加用户字段

时间:2011-08-08 11:47:41

标签: drupal drupal-7

我正在尝试为我正在从Drupal 6迁移的模块创建.install。它需要两个“配置文件字段”,在drupal 6中,它会自动检查并创建。

要将它升级到drupal 7,我正在尝试使用字段进行此操作!够容易吗?

到目前为止我已经

if(!field_info_field('user_fullname')) {
    $field = array(
        'field_name' => 'user_fullname',
        'type' => 'text',
        'settings' => array(
            'required' => TRUE,
        ),
    );
    field_create_field($field);
    $instance = array(
        'field_name' => 'user_fullname',
        'entity_type' => 'user',
        'label' => 'The user\'s full name',
        'bundle' => 'additional_info',
        'required' => true,
        'widget' => array(
            'type'=>'options_select',
        )
    );
    field_create_instance($instance);
}

肯定会创建字段,但是在用户的个人资料中不可见?
我需要额外的东西吗?如果是这样,什么?

非常感谢。

已解决:这是由于捆绑(不完全确定捆绑是什么),我将捆绑更改为'用户'并且它出现了!

4 个答案:

答案 0 :(得分:4)

bundle与内容类型几乎相同。但是因为在D7中用户也是实体,但他们不满足,使用术语“内容类型”没有意义。参考:Barry Jaspan的DrupalCon Paris 2009会议:模块开发人员的Field API简介。

Intro to the Field API for Module Developers

答案 1 :(得分:0)

这是由于捆绑(不完全确定捆绑是什么),我将捆绑更改为'用户',它出现了!

答案 2 :(得分:0)

正如我在D7中所知,捆绑包类似于实体的模型,它可以包含字段。默认的drupal包是节点,用户和分类,但新的API也为开发人员提供了创建自定义包的功能。每个字段都需要属于一个包。

答案 3 :(得分:0)

Drupal中的bundle是实体的子集。在这种情况下,实体类型是User,并且只有一种类型的User,因此bundle是User。

在分类法中:分类法是实体,词汇是捆绑。

在节点中:节点是实体,内容类型是捆绑包。

没有字段可以附加到实体,属性附加到实体(已发布,粘性等)。字段附加到Bundles。

我没有足够的回复评论,所以这是我通过谷歌找到的答案。就像我一样。