diff --git a/config/schema/view_mode_selector.schema.yml b/config/schema/view_mode_selector.schema.yml index 2447f9b..82e4b1c 100644 --- a/config/schema/view_mode_selector.schema.yml +++ b/config/schema/view_mode_selector.schema.yml @@ -16,6 +16,8 @@ field.field_settings.view_mode_selector: type: boolean hide_title: type: boolean + override_title: + type: string icon: type: mapping mapping: diff --git a/src/Plugin/Field/FieldType/ViewModeSelectorItem.php b/src/Plugin/Field/FieldType/ViewModeSelectorItem.php index e117ad7..9ccddb6 100644 --- a/src/Plugin/Field/FieldType/ViewModeSelectorItem.php +++ b/src/Plugin/Field/FieldType/ViewModeSelectorItem.php @@ -97,6 +97,17 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) { // if ($instance['widget']['type'] == 'view_mode_selector_radios') { $element['view_modes'][$view_mode_id]['prefix']['#markup'] = '
'; + $element['view_modes'][$view_mode_id]['override_title'] = [ + '#type' => 'textfield', + '#title' => $this->t('Override title'), + '#default_value' => $settings['view_modes'][$view_mode_id]['override_title'] ?? "", + '#states' => [ + 'visible' => [ + 'input[name="field[settings][view_modes][' . $view_mode_id . '][enable]"]' => ['checked' => TRUE], + ], + ], + ]; + $element['view_modes'][$view_mode_id]['hide_title'] = [ '#type' => 'checkbox', '#title' => t('Hide title'), diff --git a/src/Plugin/Field/FieldWidget/ViewModeSelectorWidgetBase.php b/src/Plugin/Field/FieldWidget/ViewModeSelectorWidgetBase.php index 036eee6..8a54de3 100644 --- a/src/Plugin/Field/FieldWidget/ViewModeSelectorWidgetBase.php +++ b/src/Plugin/Field/FieldWidget/ViewModeSelectorWidgetBase.php @@ -49,6 +49,10 @@ public function __construct($plugin_id, $plugin_definition, FieldDefinitionInter // Reduce options by enabled view modes foreach (array_keys($view_modes) as $view_mode) { if (isset($field_settings['view_modes'][$view_mode]['enable']) && $field_settings['view_modes'][$view_mode]['enable']) { + if (isset($field_settings['view_modes'][$view_mode]['override_title']) && strlen($field_settings['view_modes'][$view_mode]['override_title']) > 0) { + $view_modes[$view_mode] = $field_settings['view_modes'][$view_mode]['override_title']; + } + continue; } unset($view_modes[$view_mode]);