Drupal 7 - Массовое изменение alt и текста заголовка для существующих элементов - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть коммерческий веб-сайт Drupal с около 100 000 товаров.Теперь клиент хочет, чтобы я изменил имена файлов с изображениями продуктов и добавил альтернативные (альтернативные) тексты к изображениям для всех существующих продуктов и наименований цветов и цветов.

Путь к полям файлов, казалось, отлично подходит для изменения имен файлов файлов изображений., Но я просто не могу понять, как автоматически добавлять альтернативные тексты к изображениям. Я пробовал hook_file_update, hook_file_presave, hook_entity_presave и т. Д. Я пытаюсь добавить альтернативный текст во время пакетного обновления путей к полям файлов и всехуков запущены, но по какой-то причине альтернативные текстовые данные не сохраняются в сущности.

Поле изображения продукта - это тип изображения с виджетом браузера Media.

Любая помощь для этого?

Вот код hook_entity_presave ():

if ($entity->type == 'image' && (empty($entity->alt) || empty($entity->field_file_image_alt_text))) {
$product = _get_referenced_product($entity->fid);
if ($product) {
  $full_product = commerce_product_load($product->product_id);
  $title = $full_product->title;

  if (!empty($full_product->field_search_color)) {
    $search_color = $full_product->field_search_color[LANGUAGE_NONE][0]['tid'];
    $search_color = taxonomy_term_load($search_color);
    $color_name = $search_color->name;
  }
  $entity->alt = $title . ' ' .ucfirst($color_name);
  $entity->field_file_image_alt_text = $title . ' ' .ucfirst($color_name);
  object_log('Entity', $entity);
  object_log('Type', $type);
}

}

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

На самом деле проблема в моем случае заключалась в том, что я пытался установить значение поля alt неправильно.Поле «Field_file_image_alt_text», используемое элементом изображения, является обычным текстовым полем, поэтому ему явно нужна следующая структура данных.

$file->field_file_image_alt_text[LANGUAGE_NONE][0]['value'] = $title . ' ' .ucfirst($color_name);
$file->field_file_image_alt_text[LANGUAGE_NONE][0]['safe_value'] = $title . ' ' .ucfirst($color_name);

Так что я просто глупая ошибка!И между прочим, я использовал hook_file_presave () hook.

0 голосов
/ 07 декабря 2018

У меня была такая же проблема, и я обновил тег alt всех изображений в моих статьях.Обратите внимание, в моем случае я хотел обновить узлы.И я использовал следующий код: https://www.gyanblog.com/gyan/34-how-add-alt-attribute-images-all-my-drupal-articles-or-other-content-type/

...