Как с помощью function template_preprocess_field() передать значение из одного поля в атрибут другого поля?

Главные вкладки

Аватар пользователя towi towi 27 июля 2022 в 23:14

У меня есть энтити Entity Product где одно из полей:
- поле reference на Media type с названием Media Product Image

У Media Product Image есть поля:
- Image
- Custom Color id

И в developers tools браузера картинка выглядит так:

<img loading="lazy src="/sites/default/files/styles...." width="300" height="550" typeof=foaf:Image>

Нужно добавить к тегу <img> атрибут data-color и передать в него значение из поля Custom Color id.
Это можно сделать с помощью:
https://api.drupal.org/api/drupal/core%21includes%21theme.inc/function/t...

Пример:

<?php
function my_theme_preprocess_field(&$variables$hook) {
  
$element $variables['element'];
  if (isset(
$element['#field_name'])) {
    if (
$element['#field_name'] == 'field_image') {
      
// do something
    
}
  }
}
?>

Но проблема в том что когда я в своем модуле entity_product_admin в файле .module в названии функции пишу слово media :

<?php
function entity_product_admin_preprocess_media(&$variables$hook) {
}
?>

Я не могу достать field_custom_color_id потому что в API сущности media просто нет метода с помощью которого можно получить значение данного поля:

Кроме того я не имею доступа к атрибутам image и не могу добавить атрибут data-color с значением поля Custom color id.

Если написать в названии функции слово image :

<?php
function entity_product_admin_preprocess_image(&$variables$hook) {
}
?>

То я уже имею доступ к атрибутам image, но не имею доступа к полю field_custom_color_id:

Пробовал в названии функции писать просто field, но тогда вообще никуда но могу достучаться.
Как тогда эта функция должна выглядеть?