Мне удалось установить тег Alt при загрузке изображения в продукт через HTML-форму.

images = params[:images] || nil

if images
 images.each do |image|
      a = ShopifyAPI::Image.new
      a.prefix_options = {:product_id => params[:product_id]}
      a.metafields = [{:key => 'alt', :value => 'Cake', :value_type => "string", :namespace =>  "tags"}]
      a.attachment = Base64.encode64(image.read)
      a.filename = image.original_filename
      a.save
 end
else
.
.
.

Но когда дело доходит до получения изображений для продукта, где alt = 'Cake', я не могу понять этого. Я попытался выполнить поиск в метаполях через консоль ShopifyAPI, но без особой радости.


Было бы неплохо, если бы это было так просто ...

a = ShopifyAPI::Image.where(alt: 'Cake', product_id: 245512249)

Или лучше...

a = ShopifyAPI::Product.find(245512249)
b = a.images.select { |image| image.alt == 'Cake' }

Или...

a = ShopifyAPI::Product.find(245512249)
a.images.each do |image|
  b << image if image.alt == 'Cake'
end
0
Crimbo 20 Мар 2014 в 19:19
Когда у вас есть продукт через один вызов API, вы получаете все его изображения. Тогда было бы тривиально перебирать изображения в поисках интересующего вас. Это намного проще и надежнее, чем поиск изображения по содержимому тега alt.
 – 
David Lazar
20 Мар 2014 в 19:49
Спасибо, но я тоже пробовал. Проблема в том, что изображения не имеют атрибута alt. Кажется, они полагаются на метаполя таблицы ссылок - я попытался увидеть, какие метаполя существуют, и нет ни одного, относящегося к изображению
 – 
Crimbo
20 Мар 2014 в 20:15
Да ... теги alt - это метаполе, и поскольку эти ресурсы лишние ... вы не можете искать их, не просматривая все изображения ... вам повезло. В любом случае использование альтернативных тегов для логики - это, вероятно, плохая идея. Я бы оставил их с единственной целью - объяснить изображение для SEO.
 – 
David Lazar
20 Мар 2014 в 22:25
Знаете ли вы, где находится метаполе тега alt? Странно, что они, кажется, не существуют через метаполя магазина или метаполя продукта. Как бы вы посоветовали мне пометить каждое изображение, чтобы его можно было найти в поиске?
 – 
Crimbo
21 Мар 2014 в 05:17
1
Тогда используйте ключи имени файла и избегайте сложных метаполей. Ваш код будет легче поддерживать, и вы избавитесь от ненужной сложности. Оставьте альтернативные теги в покое для SEO. Только мои 0,02 от того, что вы сделали то, что вы хотите, десятки раз ... или больше
 – 
David Lazar
21 Мар 2014 в 17:20

1 ответ

Лучший ответ

Невозможно вызвать изображения продуктов в зависимости от тега Alt; ShopifyAPI не позволяет этого.


Но это коммерческая тайна ...

Просто добавьте значение тега Alt к имени файла изображения.

images = params[:images] || nil

if images
 images.each do |image|
      a = ShopifyAPI::Image.new
      a.prefix_options = {:product_id => params[:product_id]}
      a.metafields = [{:key => 'alt', :value => 'Cake', :value_type => "string", :namespace =>  "tags"}]
      a.attachment = Base64.encode64(image.read)
      a.filename = 'Cake_'+image.original_filename
      a.save
 end
else
.
.
.

Таким образом, вы можете фильтровать изображения продуктов с помощью строкового значения «Cake_» в атрибуте «: src».

@product = ShopifyAPI::Product.find(params[:id])

@product.images.each do |image|
  if image.attributes[:src].include?('Cake_')
    .
    .
    .
  end
end

Надеюсь, это поможет!

0
Crimbo 27 Апр 2014 в 14:00