6

我为 Drupal 8 创建了一个自定义模块,允许用户选择内容类型以便以编程方式添加一些字段。如何创建一些字段(在这种情况下为文本类型)并将它们附加到具有自定义模块的内容类型?

一些帮助?

谢谢。

4

3 回答 3

3

您需要创建 FieldType、FieldWidget 和 FieldFormatter(如果需要),Core/Field/Plugin/Field 中有很好的示例。

这里有一个很好的例子https://www.drupal.org/node/2620964

于 2016-01-27T13:46:57.903 回答
3

Drupal 8 的结帐字段 API

它实现了几个功能,并且hook_entity_bundle_field_info可能是您需要的,这是该钩子文档中的文本字段示例

function hook_entity_bundle_field_info(\Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
  // Add a property only to nodes of the 'article' bundle.
  if ($entity_type->id() == 'node' && $bundle == 'article') {
    $fields = array();
    $fields['mymodule_text_more'] = BaseFieldDefinition::create('string')
      ->setLabel(t('More text'))
      ->setComputed(TRUE)
      ->setClass('\Drupal\mymodule\EntityComputedMoreText');
    return $fields;
  }
}

您可能还需要字段存储,检查hook_entity_field_storage_info

于 2015-12-21T14:53:36.323 回答
1

您可以使用此模块以编程方式从自定义 YAML 或 JSON 文件一次为任何实体类型和多个包创建字段:

https://drupal.org/project/field_create

模块最简单的方法是在 hook_field_create_definitions() 中添加字段。只需创建此函数:

function mymodule_field_create_definitions_alter(&$definitions) {}
于 2021-10-20T20:40:37.350 回答