Импорт файлов к товару в рамках улучшенного импорта

А у меня ушел крупный продавец электроинструментов, и как раз по этой причине. Сказал, что не фантики продает. :smirk:

1 лайк

Представляем модуль для экспорта и импорта прикрепленных файлов.

https://www.ecom-labs.ru/cs-cart-multi-vendor-moduli/cs-cart-modul-eksport-import-prikreplennyh-faylov.html

Если будут вопросы, спрашивайте

1 лайк

Удивительно, сколько лет прошло перед тем как коробочным функционалом стало возможно пользоваться… Он мне был очень нужен 4 года назад. Еще раз о нем вспоминал и он мне был крайне необходим 2 года назад. Оба раза находил другие решения(матеря CS-Cart). И вот, наконец-таки есть решение… но я больше не хочу вообще трогать стандартные обмены cs-cart. Правда всё-равно придется наверное.

1 лайк

Наконец-то сделали такой модуль! Почему-то был уверен, что именно ecom-labs до этого дойдут:) Даже уже думал к вам обратиться за кастомной разработкой такого модуля, но всё руки не доходили.

Купил модуль, написал вам в личку вопрос по его работе.

1 лайк

Логику импорта файлов реализовали. Войдет в 4.12
Сейчас изучаем вопрос как это сделать в фоне, потому что обычный то импорт долго делается, а с файлами тем более.

Сможете сделать для PDF открытие в браузере?

А его ускорить никак нет возможности? И второй момент хочу обратить внимание - при установке модуля Общие товары продавцов перестает существовать возможность обновления через импорт товаров каталога(в выборе есть только товары продавцов… а через них невозможно обновить головные карточки). А еще ошибки о том что характеристика не импортирована по каким-то причинам не отображаются, пока этот модуль не отключишь. Отключив модуль сделал то что хотел, но пока вообще понял что именно в нем дело - столько времени потратил на бесполезные попытки. Причем ошибки никакие не отображаются с включенным модулем. А потом, когда выключил получил ошибку Характеристика XXX не может быть задана товару YYY. Это уже лучше чем ничего и только в этот момент мне люди подсказали что возможно проблема в том что в характеристике указан список категорий(так и оказалось, при импорте из 1с эти категории добавились частично). Можно в ошибке так и написать, что не импортирована из-за настроек характеристики, категорий. А то голову ломал бы, хорошо подсказали. Надо было всего-то у всех товаров одну характеристику заполнить - 3 дня потратил, не понимая что происходит и что не так - ни в логах записей, ни ошибок - просто не импорт проходил, а толку не было.

В ядре делать не будем, браузеры все такие медленнее просмоторщиков и по моему опыту когда человек нажимает на этот файл он ожидает что файл скачается.
Вот тут есть решение: https://stackoverflow.com/questions/6293893/how-do-i-force-files-to-open-in-the-browser-instead-of-downloading-pdf по идее должно решаться модулем.

Есть важный момент, который, к сожалению, не даёт пользоваться функционалом прикреплённых файлов, даже при добавлении возможности импорта этих файлов. Я писал об этом разработчикам модуля ecom-labs, но они ответили, что это проблема ядра, а не их модуля. Напишу здесь, раз вы будете добавлять импорт файлов:

Как быть, когда мне нужно один и тот же файл прикрепить к разным товарам? Ну т.е. я это могу конечно сделать с помощью вашего модуля, но тогда в папку с id товара копируется один и тот же файл. А если у меня в категории товаров, например, 5000 товаров, для которых по сути нужен всего один общий файл (сертификат, руководство по эксплуатации и т.п.)? Это тогда нужен хостинг нереального размера, что абсолютно не рационально, вы так не считаете? Как-то можно решить эту проблему?
В идеале, чтобы файлы помещались не в папку с ID товаром, а просто в некую папку с документацией (например, просто в var/attachments ) и чтобы несколько необходимых товаров могли ссылаться всего на один файл, а не на тысячу его копий.

1 лайк

Изучали этот момент столкнулись с рядом трудностей решение которых увеличит время реализации и приведет к усложнению интерфейса и логики.
Например как узнавать что файл который мы загружаем изменился, в какой момент уже можно удалить неиспользуемый файл и прочее.
Когда у вас один и тот же файл для большого количества это должно делаться на уровне модификации и назначаться такие файл должны через например характеристику, и скачиваться с сервера. Логика файлов и аттачментов завязана на то что они разные для каждого файла.

Очень распространена ситуация когда документация, например, или сертификат товара, или сертификат производителя один и тот же, относится к десяткам/сотням/тысячам товаров. Можно в логике модуля прикрепленных файлов добавить настройку - проверку по имени и размеру файла, например. И при её активации не удалять файлы, если они относятся хотя бы к еще одному товару.

1 лайк

Мы тут где-то размещали решение. Не находили?

какую модификацию? кто её мне разработает? Самостоятельно я не смогу это внедрить.
Этот случай, как вам пишут и другие люди, намного чаще случается, чем ситуация, когда для каждого товара какой-то отдельный уникальный файл есть. Поэтому странно выглядит ваша позиция: функция нужная, но мы её реализовывать не будем, потому что сложно как-то и вообще сами разбирайтесь.

upd:
Есть же характеристика типа “Бренд”, которая общая для тысяч товаров. Почему-то с ней проблемы решены эти (проверка, что она поменялась и ещё какая-то ерунда, которую вы написали).
Можно ввести похожий новый тип характеристики (“Документация”). Затем создавать характеристики с этим типом, в значениях этих характеристик будут вноситься ссылки на документацию на сервере, и эти характеристики будут общими для нужных товаров.

@imac прокомментировать никак не хотите?

И к упрощению одновременно. Ну вот на вскидку.
В базе ничего менять не нужно, структура таблиц подходит: есть таблица images и images_links (аналогично: product_files с подчиненными таблицами).
Логика:
При импорте товаров: загружая файл на сервер - я же не могу загрузить два файла с одним наименованием, правда? - значит при первом упоминании файла создается запись в таблице images с помещением файла в отведенное место, дальше при ответе true что файл с таким именем уже существует - не писать в images, а сразу писать в images_links на нужный image_id.
Вариант, когда изображение с таким наименованием уже существует до импорта (избегаем всяких случайных переименований файлов, разве что кроме транслитераций):

  1. удалить старый файл, на его место поместить новый (файл попадет во все новые товары, а также будет заменен во всех старых товаров. Требуется конечно пересоздание миниатюр, и лучше не чисткой кэша миниатюр, а именно пересозданием для данного файла, так как на данный момент карт не может очистить кэш для конкретного объекта - почему? - а чистка всего кэша - прям беда для первых десятков посетителей после этого процесса.
  2. Ничего не делать, вывести список спорных артикулов с равными названиями файлов (вариант по умолчанию, так как лучше конечно узнать в каких артикулах идет дублирование названий, сверить правильность, при необходимости что-то переименовать, и тогда уже загрузить).
    Чистка:
    как уже говорили выше: если для записи в images по image_id нет ни одной записи в images_links - файл можно удалять.

Все аналогично для файлов… Один файл - несколько ссылок на него, и нет непонятных наименований. И упрощается вариант чистки кэша миниатюр от изображения для конкретного image_id.

Всем привет, касательно одного файла для большого количества товаров

Сложности я описывал уже. Давайте попробуем прикинуть какие есть варианты.
Например нам пришла в голову мысль, чтобы не загружать на сайт файлы у которых вместо пути к файлу указана ссылка, в таком случае все очень даже будет работать. Например вы можете закачать все файлы в папку attachments на вашем сервере и при импорте указывать ссылку вида https://store.com/attachments/file-for-many-products.pdf. В новом импорте это легко делается подменой пути. Таким образом мы не будем загружать файлы по ссылкам на сервер в папку продукта, а они будет отображаться сразу по ссылке.

Как вам такой вариант решения, будет ли это для вас работать?

Обратная сторона такого решения, это то что если кто то хочет загрузить файлы, мануалы например, с другого сервера то они не загрузятся автоматически на сайт.

1 лайк

Что-то такого рода бывает очень полезно, если надо массово обновить прикрепленный файл. Например, сертификат производителя продленный подгрузить. Или инструкцию обновленную, или еще что. Можно заменить один файл в папке и изменить его тем самым во всех товарах.

“Обратная сторона такого решения, это то что если кто то хочет загрузить файлы, мануалы например, с другого сервера то они не загрузятся автоматически на сайт.” Не помешала бы опция “загружать”. Потому как в ряде случаев действительно может пригодиться и вариант предоставления ссылки на сайт производителя, например, а в других - надо всё-таки грузить к себе на сайт.

1 лайк

Это предположения и они у нас тоже есть, а я хочу найти прям конкретный факт что вот мне точно нужно загружать файлы, потому что …
Это поможет сделать интерфейс понятнее а не с множеством разбросанных в разных местах настроек.

меня это устроит более чем. Потому что по факту сейчас у меня и так это реализовано, только не через прикреплённые файлы, а просто для товаров прописываю ссылку в значении характеристики.

1 лайк

Т.е. это не будет работать так, как, например, с изображениями, которые можно загрузить в магазин по ссылкам с другого сайта? Думаю, это не такая большая проблема. Всё-таки, документацию, мне кажется, в большинстве случаев сначала себе на сервер предварительно загружают.