允许用户动态地将字段和值添加到Drupal中的节点

时间:2012-05-18 22:03:21

标签: drupal cck drupal-taxonomy

我正在尝试为用户提供一种方法来填充仅包含给定内容所需字段的表单。

例如,我有一个名为“研究项目”的内容类型,我想为每一个添加一系列测量。

例如。 项目1: 水样采访

测量: 收集加仑水 - 20加仑

收集时的环境温度 - 75华氏度

在水中发现PPM铅 - 2 ppm

测量标准将提前输入系统,他们会从下拉列表中选择它。我想UI的形式如下:

从下拉列表中选择度量>字段输入值 +链接以添加无限的新测量和值行

测量值在不同项目之间是变化的,其中有很多,并且总是添加新的测量值,因此将每个潜在测量值添加为自己的CCK字段是不切实际的。还有太多不同类型的项目可以使每个项目的内容类型变得切实可行。所以基本上我正在寻找能够构建表单并在运行中填充结果的能力。我该怎么做呢?我可以输入我的测量值作为分类术语,但是我怎么能为每个分配和存储一个值?

1 个答案:

答案 0 :(得分:0)

有两个功能

field_create_field()可以自己创建字段。

field_create_instance() - 将字段绑定到捆绑包。 示例from this post

$field = array(
    'field_name' => 'field_' . $vocabulary->machine_name, 
    'type' => 'taxonomy_term_reference',
    'cardinality' => FIELD_CARDINALITY_UNLIMITED, 
    'settings' => array(
      'allowed_values' => array(
        array(
          'vocabulary' => $vocabulary->machine_name, 
          'parent' => 0,
        ),
      ),
    ),
  );
  field_create_field($field);

  $instance = array(
    'field_name' => 'field_' . $vocabulary->machine_name, 
    'entity_type' => 'node', 
    'label' => 'Tags', 
    'bundle' => 'article', 
    'description' => $vocabulary->help, 
    'widget' => array(
      'type' => 'taxonomy_autocomplete', 
      'weight' => -4,
    ), 
    'display' => array(
      'default' => array(
        'type' => 'taxonomy_term_reference_link', 
        'weight' => 10,
      ), 
      'teaser' => array(
        'type' => 'taxonomy_term_reference_link', 
        'weight' => 10,
      ),
    ),
  );
  field_create_instance($instance);