2012-05-18 30 views
0

我试图想出一种方式让用户只填写给定内容所需的字段。允许用户向Drupal中的节点动态添加字段和值

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

例如。 PROJ 1: 水取样

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

环境温度在收集时间 - 75华氏度

PPM铅在水中发现 - 2ppm的

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

选择测量>字段中输入值 +链接添加无限的新的测量和值的行

的测量是从项目的变量来推算,有他们中的很多人,并且总是添加新的,因此添加每个潜在的测量值都是不切实际的,因为它是自己的CCK领域。也有太多不同类型的项目可以使每个项目的内容类型实用。所以基本上我正在寻找能够构建表单并在运行中填充结果的能力。我应该如何去做这件事?我可以输入我的测量值作为分类术语,但是我怎样才能为每个值分配和存储一个值?

回答

0

有两个功能

field_create_field()可以创建字段a本身。

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); 
相关问题