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() 钩子。
我有一个包含大约 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() 钩子。