[msOrderFiles] 1.1.0 - Загрузка файлов к заказу из фронт-энда
Компонент обрёл возможность загружать файлы из фронт-энда, как при оформлении заказа, так и для уже оформленных заказов. Файлы могут грузить и анонимы, и зарегистрированные пользователи.
Как известно, после оформления заказа анонимом, на указанный email при заказе создаётся пользователь. Так вот этот пользователь прикрепляется и к файлам, которые были загружены при оформлении заказа.
Сниппет лучше всего размещать в чанке tpl.msOrder, чтобы в пустой корзине форма не отображалась.
В нужном месте шаблона письма пишем вызов сниппета pdoResources с нашей моделью msOrderFiles:
Важно учитывать, что это решение 100% работает для miniShop2 >= 2.4, т.к. проверялось только на нём. Хотя можно попытаться совместить и с более ранними версиями магазина, скорее всего, даже без существенных правок.
Как известно, после оформления заказа анонимом, на указанный email при заказе создаётся пользователь. Так вот этот пользователь прикрепляется и к файлам, которые были загружены при оформлении заказа.
Вывод формы загрузки файлов
Сниппет лучше всего размещать в чанке tpl.msOrder, чтобы в пустой корзине форма не отображалась.
Параметры сниппета msofForm:
- tpl — Шаблон вызова формы,
- order — ID заказа. По-умолчанию 0,
- user — ID пользователя. По-умолчанию текущий,
- source — Источник файлов. По-умолчанию указывается из настройки msof_source,
- anonym — Позволять ли анонимам пользоваться формой,
- dropzone — Массив параметров Dropzone, можно JSON,
- maxFiles — Максимальное кол-во файлов. По-умолчанию 2,
- maxFilesize — Максимальный размер файла в MB. По-умолчанию 2.
Пример вызова:
{'!msofForm' | snippet : [
'maxFiles' => 20,
'maxFilesize' => 10,
'anonym' => false,
]}
Важно
Чтобы пользователь мог загружать файлы из фронт-энда, добавьте его группе политику доступа msOrderFilesPolicy. Тоже касается и анонимов.Вывод файлов в письме пользователю/менеджеру
В нужном месте шаблона письма пишем вызов сниппета pdoResources с нашей моделью msOrderFiles:
{'!pdoResources' | snippet : [
'class' => 'msOrderFile',
'loadModels' => 'msOrderFiles',
'where' => [
'order_id' => $order['id'],
'active' => 1,
],
'sortby' => '{"rank":"ASC"}',
'tplWrapper' => '@INLINE <ul>{$output}</ul>',
'tpl' => '@INLINE <li><a href="{("site_url" | option) ~ $url}">{$name}</a></li>',
]}
Важно учитывать, что это решение 100% работает для miniShop2 >= 2.4, т.к. проверялось только на нём. Хотя можно попытаться совместить и с более ранними версиями магазина, скорее всего, даже без существенных правок.
P.S.
- Спасибо Володе за UserFiles, код которого был ориентиром для JS составляющей при работе с DropzoneJS.
- Спонсор выпуска Дмитрий (inetadm).
Новая версия уже в репозитории
Поблагодарить автора
Отправить деньги
Комментарии: 2
Спасибо Павлу за оперативность и нужный компонент. Тут уже несколько раз поднималась подобная тема, но все они оказывались без решения. Уже запущен в работу на одном из моих проектов.
Подскажите подойдет ли данный компонент для такой задачи:
Нужно, чтобы покупатель на странице оформления заказа прикрепил файл с реквизитами компании.
Нужно, чтобы покупатель на странице оформления заказа прикрепил файл с реквизитами компании.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.