В Drupal 8 есть хорошая зацепка ко всей форме параграфа — hook_field_widget_WIDGET_TYPE_form_alter , а в семерке можно зацепляться за отдельные поля формы — hook_field_widget_form_alter.
Рассмотрим примеры реализации этих зацепок.
Drupal 7 / hook_field_widget_form_alter
Так как мы зацепляемся за отдельный элемент формы, то добавить новый элемент так не получится, но можно изменить сам элемент и/или добавить HTML код в $element[‘#prefix’] или $element[‘#suffix’].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/** * Implements hook_field_widget_form_alter(). */ function MYMODULE_field_widget_form_alter(&$element, &$form_state, $context) { if (!empty($element['#entity_type']) && $element['#entity_type'] == 'paragraphs_item' && $element['#bundle'] == 'PARAGRAPH_BUNDLE' && $element['#field_name'] == 'FIELD_NAME') { // так мы получаем объект параграфа $P = &$element['#entity']; ... // а так мы затем добавляем что то перед элементом формы $element['#prefix'] = '...'; } } |
Drupal 8 / 9 / hook_field_widget_WIDGET_TYPE_form_alter
1 2 3 4 5 6 7 8 |
/** * Implements hook_field_widget_WIDGET_TYPE_form_alter(). */ function MYMODULE_field_widget_entity_reference_paragraphs_form_alter(&$element, &$form_state, $context) { if ($element['#paragraph_type'] == 'PARAGRAPH_BUNDLE') { $element['subform']['FIELD_NAME']['widget'][0]['#title'] = 'NEW TITLE'; } } |