Drupal 7 - 现有元素的图像 alt 和标题文本批量更改

Drupal 7 - Image alt and title text bulk change for existing elements

我有一个包含大约 100 000 种产品的 Drupal 商务网站。现在,客户希望我更改产品图片文件名,并为所有现有产品的图片添加替代 (alt) 文本 - 基于产品名称和颜色。

文件字段路径似乎很适合更改图像文件的文件名。 但我不知道如何自动向图像添加替代文本。我一直在尝试 hook_file_update、hook_file_presave、hook_entity_presave 等。我我正在尝试在文件字段路径的批量更新期间添加替代文本,并且所有挂钩都是 运行 但由于某种原因,替代文本数据未保存到实体中。

产品图像字段是带有媒体浏览器小部件的图像类型。

对此有什么帮助吗?

这是 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);
}

}

我遇到了同样的问题,我更新了文章中所有图片的 alt 标签。请注意,在我的例子中,我想更新节点。 而且,我使用了以下代码: https://www.gyanblog.com/gyan/34-how-add-alt-attribute-images-all-my-drupal-articles-or-other-content-type/

实际上我遇到的问题是我试图以错误的方式设置 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() 钩子。