diff --git a/core/modules/book/config/install/node.type.book.yml b/core/modules/book/config/install/node.type.book.yml
index e7ad5f7af73ffa4987ceb8b33f4d2f66d27156d0..d2409d487cbdfc0eaafc0030cd46a4683514c77f 100644
--- a/core/modules/book/config/install/node.type.book.yml
+++ b/core/modules/book/config/install/node.type.book.yml
@@ -2,7 +2,6 @@ type: book
name: 'Book page'
description: 'Books have a built-in hierarchical navigation. Use for handbooks or tutorials.'
help: ''
-has_title: true
title_label: Title
settings:
node:
diff --git a/core/modules/forum/config/install/node.type.forum.yml b/core/modules/forum/config/install/node.type.forum.yml
index 011600f50bca17eb5ff6972a7cf6515cad8e2532..f2e86af663a48dde44f6c0419c5480bb97604d84 100644
--- a/core/modules/forum/config/install/node.type.forum.yml
+++ b/core/modules/forum/config/install/node.type.forum.yml
@@ -2,7 +2,6 @@ type: forum
name: 'Forum topic'
description: 'A forum topic starts a new discussion thread within a forum.'
help: ''
-has_title: true
title_label: Subject
settings:
node:
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_node_type.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_node_type.yml
index ce4e9e85e33bb92d083fae8dcd12388c3cbd7ba8..fe918101e7cd44dd67aa88f57f56ceff20ffa853 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_node_type.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_node_type.yml
@@ -11,7 +11,6 @@ process:
module: module
description: description
help: help
- has_title: has_title
title_label: title_label
preview: constants.preview
submitted: submitted
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/NodeType.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/NodeType.php
index 4120de35d2b2c548864922166e67469e4f1e29a9..592f8b8091f496fab15761e60c092da9a4b7c0df 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/NodeType.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/NodeType.php
@@ -51,7 +51,6 @@ public function query() {
'module',
'description',
'help',
- 'has_title',
'title_label',
'has_body',
'body_label',
@@ -74,7 +73,6 @@ public function fields() {
'module' => $this->t('The module providing the node type.'),
'description' => $this->t('Description of the node type.'),
'help' => $this->t('Help text for the node type.'),
- 'has_title' => $this->t('Flag indicating the node type has a title.'),
'title_label' => $this->t('Title label.'),
'has_body' => $this->t('Flag indicating the node type has a body field.'),
'body_label' => $this->t('Body label.'),
diff --git a/core/modules/migrate_drupal/tests/src/source/d6/NodeTypeTest.php b/core/modules/migrate_drupal/tests/src/source/d6/NodeTypeTest.php
index e38aba6a99957d02ce1ffe06b9082f5e8e40c940..ab22f18ecca60ffe06456e49e786e7fd7f1bbe9c 100644
--- a/core/modules/migrate_drupal/tests/src/source/d6/NodeTypeTest.php
+++ b/core/modules/migrate_drupal/tests/src/source/d6/NodeTypeTest.php
@@ -41,7 +41,6 @@ class NodeTypeTest extends MigrateSqlSourceTestCase {
'module' => 'node',
'description' => 'A page, similar in form to a story, is a simple method for creating and displaying information that rarely changes, such as an "About us" section of a website. By default, a page entry does not allow visitor comments and is not featured on the site\'s initial home page.',
'help' => '',
- 'has_title' => 1,
'title_label' => 'Title',
'has_body' => 1,
'body_label' => 'Body',
@@ -57,7 +56,6 @@ class NodeTypeTest extends MigrateSqlSourceTestCase {
'module' => 'node',
'description' => 'A story, similar in form to a page, is ideal for creating and displaying content that informs or engages website visitors. Press releases, site announcements, and informal blog-like entries may all be created with a story entry. By default, a story entry is automatically featured on the site\'s initial home page, and provides the ability to post comments.',
'help' => '',
- 'has_title' => 1,
'title_label' => 'Title',
'has_body' => 1,
'body_label' => 'Body',
diff --git a/core/modules/node/config/schema/node.schema.yml b/core/modules/node/config/schema/node.schema.yml
index 8ebe3742907889b71891292eb1e8e2a271d62565..81e097735ebd9a2758e9297673852cafdb913fe2 100644
--- a/core/modules/node/config/schema/node.schema.yml
+++ b/core/modules/node/config/schema/node.schema.yml
@@ -27,9 +27,6 @@ node.type.*:
help:
type: text
label: 'Explanation or submission guidelines'
- has_title:
- type: boolean
- label: 'Has title'
title_label:
type: label
label: 'Title field label'
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 45c304363fe284a94f08846d401626b1627eedda..d4f7db02f9aedbb907dae6d7fee532b71a38bdc9 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -209,11 +209,6 @@ function node_entity_view_display_alter(EntityViewDisplayInterface $display, $co
function node_entity_form_display_alter(EntityFormDisplayInterface $form_display, $context) {
if ($context['entity_type'] == 'node') {
$node_type = node_type_load($context['bundle']);
- // @todo Reconsider when per-bundle overrides of field definitions are
- // possible - https://drupal.org/node/2114707.
- if (!$node_type->has_title) {
- $form_display->removeComponent('title');
- }
}
}
diff --git a/core/modules/node/src/Entity/NodeType.php b/core/modules/node/src/Entity/NodeType.php
index 2c7d3b2b376ba7cdc542a9e370422bdc7f9c006d..ecc21ea03f931e2c48385b3c7d2d0d0133cb5fcc 100644
--- a/core/modules/node/src/Entity/NodeType.php
+++ b/core/modules/node/src/Entity/NodeType.php
@@ -75,15 +75,6 @@ class NodeType extends ConfigEntityBundleBase implements NodeTypeInterface {
*/
public $help;
- /**
- * Indicates whether the Node entity of this type has a title.
- *
- * @var bool
- *
- * @todo Rename to $node_has_title.
- */
- public $has_title = TRUE;
-
/**
* The label to use for the title of a Node of this type in the user interface.
*
diff --git a/core/modules/node/src/NodeTypeForm.php b/core/modules/node/src/NodeTypeForm.php
index 4d87e03760c7fd854b4caceba383a9b1134f4d8a..ec00d507ff45b5e71fc6f0578288749de38d226f 100644
--- a/core/modules/node/src/NodeTypeForm.php
+++ b/core/modules/node/src/NodeTypeForm.php
@@ -83,13 +83,6 @@ public function form(array $form, array &$form_state) {
'#default_value' => $type->title_label,
'#required' => TRUE,
);
- if (!$type->has_title) {
- // Avoid overwriting a content type that intentionally does not have a
- // title field.
- $form['submission']['title_label']['#attributes'] = array('disabled' => 'disabled');
- $form['submission']['title_label']['#description'] = t('This content type does not have a title field.');
- $form['submission']['title_label']['#required'] = FALSE;
- }
$form['submission']['preview'] = array(
'#type' => 'radios',
'#title' => t('Preview before submitting'),
@@ -187,10 +180,6 @@ public function save(array $form, array &$form_state) {
$type->type = trim($type->id());
$type->name = trim($type->name);
- // title_label is required in core; has_title will always be TRUE, unless a
- // module alters the title field.
- $type->has_title = ($type->title_label != '');
-
$status = $type->save();
$t_args = array('%name' => $type->label());
diff --git a/core/modules/node/tests/modules/node_test_config/config/install/node.type.default.yml b/core/modules/node/tests/modules/node_test_config/config/install/node.type.default.yml
index e28a0e48914c7bb0c6ef47458e3cdf7b1401cfbb..824ec4e71561b82075114b6bb281d74d7ed1d974 100644
--- a/core/modules/node/tests/modules/node_test_config/config/install/node.type.default.yml
+++ b/core/modules/node/tests/modules/node_test_config/config/install/node.type.default.yml
@@ -2,7 +2,6 @@ type: default
name: Default
description: 'Default description.'
help: ''
-has_title: true
title_label: Title
settings:
node:
diff --git a/core/modules/node/tests/modules/node_test_config/staging/node.type.import.yml b/core/modules/node/tests/modules/node_test_config/staging/node.type.import.yml
index 214e53a5381ba2c1070304f3bcb3aea6140dcd5b..c88d9a8f92ae76590da0f102e4d6b69c01d9cedd 100644
--- a/core/modules/node/tests/modules/node_test_config/staging/node.type.import.yml
+++ b/core/modules/node/tests/modules/node_test_config/staging/node.type.import.yml
@@ -2,7 +2,6 @@ type: import
name: Import
description: 'Import description.'
help: ''
-has_title: true
title_label: Title
settings:
node:
diff --git a/core/modules/system/entity.api.php b/core/modules/system/entity.api.php
index 50b9f6a5ee1c3047f260200010feb57a64ec1c0e..ddc302ab4c47e2cd07b963c1fc1f7a8473e81d0a 100644
--- a/core/modules/system/entity.api.php
+++ b/core/modules/system/entity.api.php
@@ -984,13 +984,6 @@ function hook_entity_extra_field_info() {
$description = t('Node module element');
foreach (node_type_get_types() as $bundle) {
- if ($bundle->has_title) {
- $extra['node'][$bundle->type]['form']['title'] = array(
- 'label' => String::checkPlain($bundle->title_label),
- 'description' => $description,
- 'weight' => -5,
- );
- }
// Add also the 'language' select if Language module is enabled and the
// bundle has multilingual support.
diff --git a/core/profiles/standard/config/install/node.type.article.yml b/core/profiles/standard/config/install/node.type.article.yml
index 2c58ec6ffb76c6239ada4fffb4bf71b2921f68d6..b7a7f6be04834fb517a3aa73e4bb18d0d03245b1 100644
--- a/core/profiles/standard/config/install/node.type.article.yml
+++ b/core/profiles/standard/config/install/node.type.article.yml
@@ -2,7 +2,6 @@ type: article
name: Article
description: 'Use articles for time-sensitive content like news, press releases or blog posts.'
help: ''
-has_title: true
title_label: Title
settings:
node:
diff --git a/core/profiles/standard/config/install/node.type.page.yml b/core/profiles/standard/config/install/node.type.page.yml
index f72d0c69d8dc9af7abdb1703f982e033fa2a0609..1c9cdfe223f13558a2f2a47faf3adaaa4353bcd8 100644
--- a/core/profiles/standard/config/install/node.type.page.yml
+++ b/core/profiles/standard/config/install/node.type.page.yml
@@ -2,7 +2,6 @@ type: page
name: 'Basic page'
description: 'Use basic pages for your static content, such as an ''About us'' page.'
help: ''
-has_title: true
title_label: Title
settings:
node: