【问题标题】:Allow user to dynamically add fields and values to a node in Drupal允许用户向 Drupal 中的节点动态添加字段和值
【发布时间】:2012-05-18 22:03:21
【问题描述】:

我试图想出一种方法,让用户只使用给定内容所需的字段来填充表单。

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

例如。 项目 1: 水样

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

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

水中发现 PPM 铅 - 2 ppm

测量标准会提前输入到系统中,然后他们会从下拉列表中选择它。我想表单的 UI 应该是这样的:

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

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

【问题讨论】:

    标签: drupal cck drupal-taxonomy


    【解决方案1】:

    有两个功能

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多