Làm thế nào để lập trình tạo các trường cho các loại nội dung và THÊM chúng vào biểu mẫu loại nội dung


8

Nói rằng tôi có trường này, "map_description". Tôi biết tôi sẽ thực hiện chức năng này để xác định trường:

$field = array(
  'field_name' => 'map_description',
  'cardinality' => 1,
  'type' => 'text',
);
field_create_field($field);

Và tôi có mã này mà tôi không chắc nó làm gì nhưng tôi nói rằng tôi sẽ cần nó:

 $instance = array(
    'field_name' => 'map_description',
    'label' => 'The map description.',
    'bundle' => 'my_content_type',
    'entity_type' => 'node',
    'widget' => array(
    'type' => 'text_textfield',
 );
 field_create_instance($instance)

Hai bit mã này đều nằm trong hook cài đặt của tôi và chạy khi tôi cài đặt mô-đun. Nhưng trong khi các trường thực tế được tạo, tôi phải tự gán chúng cho loại nội dung thông qua "quản lý trường", có cách nào để các trường tự động được gán cho loại nội dung không?

Câu trả lời:


10

Bạn đã gần tới.

Từ mã của bạn:

'bundle' => 'my_content_type',

Thay thế my_content_type bằng tên của loại nội dung bạn muốn đính kèm.

Dưới đây là ví dụ đầy đủ về việc thêm trường văn bản Bí danh vào loại nội dung Bài viết . (từ monarchdigital.com )

/**
 * Update hook to add a field to a node.
 */
function my_module_update_7000() {
  $field_name = 'field_alias';
  // Make sure the field doesn't already exist.
  if (!field_info_field($field_name)) {
    // Create the field.
    $field = array(
      'field_name' => $field_name,
      'type' => 'text',
      'settings' => array('max_length' => 64),
    );
    field_create_field($field);

    // Create the instance.
    $instance = array( 'field_name' => $field_name,
      'entity_type' => 'node',
      'bundle' => 'article',
      'label' => 'Alias',
      'description' => 'The article alias.',
      'required' => TRUE,
    );
    field_create_instance($instance);

    watchdog('my_module', t('!field_name was added successfully.', array('!field_name' => $field_name)));
  }
  else {
    watchdog('my_module', t('!field_name already exists.', array('!field_name' => $field_name)));
  }
}

0

Thực hiện các thay đổi nhỏ trong mã của bạn. Trong các trường

$t = get_t();
$field = array(
   'field_name' => 'map_description',
    'label' => $t('My Description'),
    'type' => 'text',

);
trường_create_field (trường $);

& Write this in Instance

$t = get_t();
return array(
  'map_description' => array(
    'field_name' => 'map_description',
    'type' => 'text',
    'label' => $t('Map Description'),
    'bundle' => 'your_custom_content_type',
    'entity_type' => 'node',
    'widget' => array(
      'type' => 'text_textfield'
    ),
    'display' => array(
      'example_node_list' => array(
        'label' => $t('Map Description'),
        'type' => 'text'
      )
    )
  ),
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.