Изменить hook_field_formatter_view?

11

Каков наилучший способ изменения выходного поля? Я нашел " hook_field_formatter_view ", но, похоже, ничего подобного "hook_field_formatter_view_alter" не существует. В моем случае у меня есть поля адреса (модуль Addressfield), которые используются в панелях «Доставка» и «Оплата» на странице оформления заказа в DrupalCommerce . Я хочу добавить некоторые js к этим полям, предпочтительно используя API формы Drupal "#attached"

volocuga
источник
Что такое JS, который вы хотели бы добавить в эти поля?
saadlulu
Плагин jquery для автозаполнения
volocuga

Ответы:

9

Вы можете попытаться изменить его с помощью функции предварительной обработки:

function example_preprocess_field(&$variables) {  
  $field_name = $variables['element']['#field_name'];  
  if ($field_name == 'field_example_field') {
    // Your code here.
  }
}

Я запустил тест для изменения $ variable ['element'] ['# attach'] ['js'], но Drupal не распознал изменения в элементе. Не уверен почему. Так что, возможно, вам придется использовать drupal_add_js.

apower
источник
5

Вызывается hook_field_formatter_view()указанная в конфигурации дисплея field_default_view(), которая сама по себе (слой или два под ним) называется field_attach_view().

Из второй ссылки видно, что она вызывается hook_field_attach_view_alter()после того, как она завершена с полями форматирования:

drupal_alter('field_attach_view', $output, $context);

так что вы должны быть в состоянии определить этот крючок.

Тем не менее, обратите внимание, что вам придется повторно найти поле в сущности, так как он запускает ловушку для всего массива рендеринга, а не просто для массива рендеринга для одного поля. Но пример крючка, связанный с выше, дает пример того, как это сделать.

JP
источник