在Drupal 8的自定义模块中,我可以添加包含其所有字段的新内容类型,但默认情况下禁用所有字段。如何在安装模块期间启用它们?
修改要明确,默认情况下,“管理表单显示”下的模块字段不会启用。如何使用钩子安装等方式启用(或禁用)字段?
编辑2 除了在新创建的内容类型中默认启用字段外,安装此模块还会更新现有内容类型(文章)上的字段,并且这些字段也会被禁用。
编辑3 已停用,表示它们在内容类型的表单显示中显示为已禁用,用户在添加内容时无法看到这些字段。
必须有可以通过hook_install运行的代码,它启用了内容类型的字段吗?
答案 0 :(得分:0)
我认为“禁用”是指在制作内容类型的实例时不显示字段。
就我个人而言,我一直在使用UI来设置每个字段的显示方式,通过为每种内容类型提供的“管理显示”页面。我像往常一样从禁用部分拖动我想要启用的字段。
当我对字段的排列方式感到满意时,我会使用精彩的内置导出功能(想想Drupal 7中的功能但更好)来为我的内容类型生成.yml配置文件。
Drupal网站上this article精彩地描述了这个过程。在这种情况下,因为它只是我们想要显示哪些字段的配置,它应该像将内容类型的“实体视图显示”配置导出到.yml文件一样简单。 (请注意,您需要正确命名您的yml文件,这在文章中有解释(我认为导出模块无论如何都提供了自动生成的名称)。)
在模块启用后,我生成了我想要应用于Drupal的配置文件,它真的就像在模块的根目录中创建两个目录一样简单:
“./配置/安装”
并将配置文件放入安装目录。
现在,首次安装模块时,Drupal将应用/ config / install目录中文件提供的配置。
答案 1 :(得分:0)
导出字段时,您还必须导出:
field.field.[entity_type].[bundle].[field_name].yml
文件。 不要忘记添加重复使用的字段声明 field.storage.[entity_type].[field_name].yml
档案core.entity_form_display.[entity_type].[budle].default.yml
core.entity_view_display.[entity_type].[budle].[view_mode_id].yml
个文件(如果您有默认值,预告片等)“实体”,如果实体是new. [entity_type].[type|paragraph_type|vocabulary].[bundle].yml
文件
我建议您使用“drush cex/cim
”命令导入和导出配置。
答案 2 :(得分:-1)
我不太了解Drupal 8,但是当我尝试创建自定义内容类型以使用本文时。
https://www.drupal.org/docs/8/api/entity-api/creating-a-custom-content-type-in-drupal-8
然后,当我启用自定义模块时,会成功创建内容类型,并且还会启用内容类型字段。
此外,我尝试在此内容类型中创建节点,然后成功创建节点。
所以请查看这篇文章。
它可能对您有所帮助。
谢谢,