Загрузка фото товара через свой экшен? (интерфейс 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 для отправки запросов на сервер.
Спасибо за информацию, попробую!