Загрузка фото товара через свой экшен? (интерфейс 2.0) Есть решение
Привет!
В общем вопрос такого плана.
Существует плагин thumbnails, который генерит миниатюры не обрезая изображение и в старом интерфейсе вебасист, все работает адекватно.
А именно часть логики которая подменяет атрибут action форме через которую загружаются фотки к товару.
То есть если соблюдаются определенные условия, то атрибут action меняется на такой
?plugin=thumbnails&module=imageupload
и запрос с инфой о фотке уходит уже в плагин. И все нормально.
В новом же варианте интерфейса уже не существует никакой формы, а существует только input с типом file. И тут уже так просто взять и перенаправить запрос в сторону плагина не получается.
В темплейте ProdMedia.html есть кусок кода который инициализирует логику работы медиа секции в режиме редактирования товара.
$.wa_shop_products.init.initProductMediaSection({
$wrapper: $("#js-product-media-section-wrapper"),
tooltips: {$_tooltips|json_encode},
templates: {$_templates|json_encode},
components: {$_components|json_encode},
locales: {
"file_type": {_w("Unsupported image type. Use PNG, GIF, WEBP and JPEG image files only.")|json_encode},
"file_size": {_w("Each file’s size cannot be greater than")|json_encode} + " " + {$_max_file_size_mb|json_encode} + {_w("KB")|json_encode} + ".",
"post_size": {_w("Total size of selected files cannot be greater than")|json_encode} + " " + {$_max_post_size_mb|json_encode} + {_w("KB")|json_encode} + ".",
"use_in_sku_forms": [
{_w("Used in %d variant.", "Used in %d variants.", 1, false)|json_encode},
{_w("Used in %d variant.", "Used in %d variants.", 2, false)|json_encode},
{_w("Used in %d variant.", "Used in %d variants.", 5, false)|json_encode}
]
},
urls: {
"save": "{$wa_app_url}?module=prod&action=saveMedia",
"video_add": "{$wa_app_url}?module=prod&action=saveVideo",
"video_delete": "{$wa_app_url}?module=prod&action=saveVideo",
"change_image_description": "{$wa_app_url}?module=prod&action=saveImageDetails",
"add_product_image": "{$wa_app_url}?module=prod&action=imageUpload",
"save_photo_changes": "{$wa_app_url}?module=prod&action=saveImageDetails",
"delete_images": "{$wa_app_url}?module=prod&action=deleteImage"
},
max_file_size: {$_max_file_size|json_encode},
max_post_size: {$_max_post_size|json_encode},
product: {$formatted_product|json_encode}
});
И туда уже прокидывается ссылка на вызов экшена imageUpload.
"add_product_image": "{$wa_app_url}?module=prod&action=imageUpload",
Но в тупую брать этот темплейт и редактировать его как-то не хочется.
Вот и возник вопрос, может кто-то знает как это организовать более-менее адекватно и без вторжений в системные файлы?
Эта тема в архиве. Добавление комментариев к ней отключено.










2 ответа
Попробуйте в обработчике хука backend_prod_content вернуть фрагмент JavaScript-кода, которым модифицируйте или полностью замените на свой блок загрузки изображений. И опишите для него свой обработчик событий, возникающих при попытке загрузить файлы (нажатие мышью и перетаскивание файлов). В этом обработчике можно использовать любую логику загрузки (при желании скопировав ту, что используется по умолчанию в Shop-Script), в том числе указать собственный URL для отправки запросов на сервер.
Спасибо за информацию, попробую!