Опубликовано в чт, 17/02/2022 - 00:53 |
По умолчанию при выводе поля с типом 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; }
Результат:
Комментарии
Добавить комментарий