diff --git a/core/lib/Drupal/Core/Entity/EntityManager.php b/core/lib/Drupal/Core/Entity/EntityManager.php index 18ae281..45d812a 100644 --- a/core/lib/Drupal/Core/Entity/EntityManager.php +++ b/core/lib/Drupal/Core/Entity/EntityManager.php @@ -1054,12 +1054,21 @@ protected function getDisplayModeOptionsByBundle($display_type, $entity_type_id, $load_ids[] = str_replace($config_prefix . '.', '', $id); } - // Generate the display options array. - $entity_displays = entity_load_multiple($display_type_entity_name, $load_ids); - foreach ($entity_displays as $display) { - if ($display->status() || $include_disabled || $display->id() == 'default') { - $display_mode_name = $display->get('mode'); - $display_mode_options[$display_mode_name] = ($display_mode_name == 'default') ? t('Default') : $display_modes[$display_mode_name]['label']; + // Generate the display options array. We don't need to load the displays + // if we don't care about the status. + if ($include_disabled) { + foreach ($display_modes as $display_mode) { + list(, $id) = explode('.', $display_mode['id']); + $display_mode_options[$id] = ($id == 'default') ? t('Default') : $display_mode['label']; + } + } + else { + $entity_displays = entity_load_multiple($display_type_entity_name, $load_ids); + foreach ($entity_displays as $display) { + if ($display->status() || $include_disabled || $display->id() == 'default') { + $display_mode_name = $display->get('mode'); + $display_mode_options[$display_mode_name] = ($display_mode_name == 'default') ? t('Default') : $display_modes[$display_mode_name]['label']; + } } }