По умолчанию при выводе поля с типом text_format Друпал отображает справочную информацию об ограничения того или иного текстового формата.
Но не всегда данная информация нужна для конечного пользователя. Приведу способ, которым можно скрыть её вывод. Вариант через css
.filter-wrapper{ display:none }
мы не рассматриваем всерьез ;-)
1. Скроем описание и справку, но оставим возможность выбора альтернативных форматов
/**
* @param $form
* @param \Drupal\Core\Form\FormStateInterface $form_state
* @param $form
* Implements hook_form_alter()
*/
function MYMODULE_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
//Форма комментария
if (substr($form['#id'], 0, 12) == 'comment-form') {
if (isset($form['comment_body'])) {
$form['comment_body']['widget'][0]['#after_build'][] = '_MYMODULE_text_format_after';
}
}
}
Мы использвали хук hook_form_alter(), отловили нужную форму, нашли нужное поле для изменений. Далее в массив к свойству #after_build добавили свой обработчик. В нем мы сможем перехватить элемент формы перед рендером. Внутри элемента есть несколько контейнеров, в которых и расположены нужные нам данные.
При помощи свойства '#access' можно выборочно отключить вывод.
/**
* Отключаем вывод информации по фильтрам
* @param $element
* @param \Drupal\Core\Form\FormStateInterface $form_state
*/
function _MYMODULE_text_format_after($element, \Drupal\Core\Form\FormStateInterface $form_state) {
$element['format']['help']['#access'] = FALSE;
$element['format']['guidelines']['#access'] = FALSE;
//Скроем label у выпадающего списка (для красоты)
$element['format']['format']['#title_display'] = 'hidden';
return $element;
}
2. Полностью скроем описание и справку форматов. А также запретим изменять текстовый формат
/**
* @param $form
* @param \Drupal\Core\Form\FormStateInterface $form_state
* @param $form
* Implements hook_form_FORM_ID_alter()
*/
function MYMODULE_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
//Форма комментария
if (substr($form['#id'], 0, 12) == 'comment-form') {
if (isset($form['comment_body'])) {
//Фиксируем нужный нам текстовый формат
$form['comment_body']['widget'][0]['#allowed_formats'] = ['plain_text'];
$form['comment_body']['widget'][0]['#format'] = 'plain_text';
//Скрываем заголовок и добавляем заполнитель
$form['comment_body']['widget'][0]['#title_display'] = 'hidden';
$form['comment_body']['widget'][0]['#attributes']['placeholder'] = t('Message');
//Прикрепляем свой обработчик #after_build
$form['comment_body']['widget'][0]['#after_build'][] = '_MYMODULE_text_format_after';
}
}
}
/**
* @param $element
* @param \Drupal\Core\Form\FormStateInterface $form_state
* @return array
*/
function _MYMODULE_text_format_after($element, \Drupal\Core\Form\FormStateInterface $form_state) {
$element['format']['#access'] = FALSE;
return $element;
}
3. Вариант для drupal 9
Файл
MYMODULE.module
/**
* @param $form
* @param \Drupal\Core\Form\FormStateInterface $form_state
* @param $form
* Implements hook_form_FORM_ID_alter()
*/
function MYMODULE_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
//Форма комментария
if (substr($form['#id'], 0, 12) == 'comment-form') {
if (isset($form['comment_body'])) {
$form['comment_body']['widget'][0]['#allowed_formats'] = ['plain_text'];
$form['comment_body']['widget'][0]['#format'] = 'plain_text';
$form['comment_body']['widget'][0]['#title_display'] = 'hidden';
$form['comment_body']['widget'][0]['#attributes']['placeholder'] = t('Message');
$form['comment_body']['widget'][0]['#after_build'][] = '_MYMODULE_text_format_after';
}
}
}
/**
* Отключаем вывод информации по фильтрам
*
* @param $element
* @param \Drupal\Core\Form\FormStateInterface $form_state
*/
function _MYMODULE_text_format_after($element, \Drupal\Core\Form\FormStateInterface $form_state) {
$element['format']['#access'] = FALSE;
return $element;
}
- 17.02.2022
- 113 просмотров
Добавить комментарий
Может быть интересно