You are here

如何用编程的形式为实体添加字段

moumouguoguo 的头像
Submitted by moumouguoguo on 星期五, 2013-10-18 07:59

老葛:你好!

我在编写模块的时候遇到这么一个需求,有的实体需要手工添加一个字段后,才能写出查询操作。

比如user实体,我想查出所有的“VIP用户”,这样需要给user加个字段来标记,一般情况下需要手工添加字段,但这样明显不够优雅。

我想在安装这个模块的时候,同时也为这个实体添加了字段,后续工作就好做多了。

请问有什么办法可以编程的形式为实体添加字段呢?

谢谢!

论坛:

Drupal版本:

moumouguoguo 的头像

谢谢老葛,我按照第4集第40页的方法从features模块获得的代码如下:

/**
 * Implements hook_field_default_field_instances().
 */
function field_group_recommand_field_default_field_instances() {
  $field_instances = array();

  // Exported field_instance: 'node-group-field_group_recommend'
  $field_instances['node-group-field_group_recommend'] = array(
    'bundle' => 'group',
    'default_value' => array(
      0 => array(
        'value' => 0,
      ),
    ),
    'deleted' => 0,
    'description' => '',
    'display' => array(
      'default' => array(
        'label' => 'above',
        'module' => 'list',
        'settings' => array(),
        'type' => 'list_default',
        'weight' => 4,
      ),
      'teaser' => array(
        'label' => 'above',
        'settings' => array(),
        'type' => 'hidden',
        'weight' => 0,
      ),
    ),
    'entity_type' => 'node',
    'field_name' => 'field_group_recommend',
    'label' => '推荐小组',
    'required' => 0,
    'settings' => array(
      'user_register_form' => FALSE,
    ),
    'widget' => array(
      'active' => 1,
      'module' => 'options',
      'settings' => array(
        'display_label' => 1,
      ),
      'type' => 'options_onoff',
      'weight' => 35,
    ),
  );

  // Translatables
  // Included for use with string extractors like potx.
  t('推荐小组');

  return $field_instances;
}

 

这个和书中的介绍有点不相符,难道是版本问题吗?我现在用的是drupal7.23版,请问如何在MODULE_install中转为编程的方式添加字段呢?如果是版本问题,你的书上介绍的应该还是有出入吧。谢谢了!