Je souhaite forcer un certain format de texte dans un champ de format de texte de profil utilisateur et masquer la liste déroulante du sélecteur de format de texte. Comment fait-on ça? C'est pour Drupal 8.
Installez le module Formats autorisés et configurez le champ pour n'autoriser qu'un seul format de texte. Ensuite, la liste déroulante du sélecteur de format de texte ne sera plus affichée.
Adapté du code Formats autorisés :
use Drupal\Core\Form\FormStateInterface;
/**
* Implements hook_field_widget_form_alter().
*/
function mymodule_field_widget_form_alter(&$element, FormStateInterface $form_state, $context) {
// Maps field names to an array containing a single format.
$map = [
'field_myfield' => ['myformat'],
];
$field_name = $context['items']->getFieldDefinition()->getName();
if (array_key_exists($field_name, $map)) {
$element['#allowed_formats'] = $map[$field_name];
$element['#after_build'][] = '_remove_text_format_box';
}
}
/**
* #after_build callback.
*/
function _remove_text_format_box($form_element, FormStateInterface $form_state) {
// Remove help, guidelines and wrapper.
unset($form_element['format']['help']);
unset($form_element['format']['guidelines']);
unset($form_element['format']['#type']);
unset($form_element['format']['#theme_wrappers']);
return $form_element;
}