Всего 125 679 комментариев

Sergey
23 апреля 2021, 12:13
0
У меня в msOrder поле для самовывоза
select id=«delivery_shop» name=«extfld_delivery_shop» value="{$form['extfld_delivery_shop']}" class=«form-control»

Нужно вот так?
$properties = $msOrder->get('properties');
$delshop = $properties['extfld_delivery_shop'];


И просто вывод {$delshop} )?
Артур Шевченко
23 апреля 2021, 12:11
0
Нет.
Артур Шевченко
23 апреля 2021, 10:04
+1
Нет, я не приемлю принцип «сдал и меня нет», я поддерживаю свои проекты. И стараюсь заранее все нюансы у заказчика узнать, чтобы доработок было минимум. Понятно, что потом аппетиты могут у заказчика вырасти, тогда и переделаем. А за то, что опытом делитесь респект!
Алексей Шумаев
23 апреля 2021, 09:58
0
Опыт — сын ошибок трудных (©), делюсь, пока минута есть.
Подзаработать потом, это хорошо; главное, чтобы проект не возвращался на доработку неожиданно, как будет что-то всплывать. А то техдолг накопится и через пару лет работа будет ради работы делаться. Ну или работать по принципу «сдал проект — и меня нет», тоже так себе подход )))
Артур Шевченко
23 апреля 2021, 09:51
0
Вечно эти опытные программисты находят изъяны и не дают насладиться маленьким триумфом от собственного роста? Я понял вас, спасибо. Что до повторной отправки, можно предусмотреть: пишем в поле comment ссылку domain.ru?msorder=2 и выводим это поле в таблице заказов. Логгирование ошибок в скрипте отправки есть, надо только возвращать false и наверное уведомлять админа. Про чтение json это прям сильно))) А вот когда вырастет, тогда можно будет переделать и ещё немного заработать ?
Алексей Шумаев
23 апреля 2021, 09:39
0
Ну да, как вариант — конкретная реализация от задачи.

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

Чтобы БД не запрашивать (хотя для небольших проектов это не имеет особого значения, да и вообще — кому нужна БД — узкое место же :-) ) — можно в файлы json писать: есть файл -> читаем, получаем указанный заказ, отправляем, удаляем. Если отправка каких-то писем не удалась — пишем в лог и данный файл не удаляем. Однако, имхо, это немного извращение.
Артур Шевченко
23 апреля 2021, 09:24
0
Понимаете какое дело, бо́льшую часть времени крон будет работать в холостую. Получается он должен раз в минуту, пусть даже раз в пять минут запускать скрипт который будет делать запрос в БД, и если есть письмо, отправлять, если нет, то ничего не делать. Но мероприятия маленькие до 500-600 человек, это примерно по 1 письму в час, если продажу начинать за месяц, в лучшем случае. В общем у меня нет каких-то обоснованных аргументов, но сам факт того что скрипт будет срабатывать впустую мне не нравится))) Я лучше пятисекудный таймер добавлю, чтобы ajax точно скрипт запустил типа «Отправляем билеты. Ждите 5...4...3...2...1 Билеты отправлены. До скорой встречи!»)))
Алексей Шумаев
23 апреля 2021, 09:13
0
Да, именно на крон. Сохраняем очередь отправки в отдельную таблицу, потом кроном раз в ~ 1 мин отправляем накопившиеся и удаляем из таблицы. Лимит на отправку за один запуск скрипта ~ 5-10 писем, чтобы не иметь проблем с хостером (чтобы за спам 100% не принимали).
Артур Шевченко
23 апреля 2021, 09:09
0
Спасибо за комментарии. По первым двум пунктам спорить не буду, особенно по второму. Что касается третьего, изначально так и было, однако отправка письма с вложением при покупке разом больше одного билета вызывала зависание от 3 секунд, возможно это связано с логикой работы ms2, поэтому я решил данный функционал вынести на отдельную страницу, потому как пользователь на неё в любом случае переходит и там он уже ничего не заметит. Если будет сбоить, повешу задачу в крон. А что до ms2 и его нужности, будь к меня скилл повыше, наверное, я его бы не использовал, но с другой стороны ms2 дал почти весь функционал, я ведь совсем немного логику подправил и генерацию билета прикрутил и всё, к тому же ещё оплату подключать, а для ms2 уже есть модули.
Алексей Шумаев
23 апреля 2021, 08:56
+3
Навскидку несколько моментов:
1. «Чтобы избежать повторных отправок, записываем id заказа в куки… » — лучше таки флаг отправки сохранить в БД, например в properties msOrder. Ибо на страницу domain.ru?msorder=1 можно перейти не раз + она запросто может попасть в индекс яндекса (проверено) и будет весело. Запретите индексацию таких страниц в robots.
2. Откликаться будет ТОЛЬКО на ajax запросы: if ($_SERVER['REQUEST_METHOD'] != 'POST')…
Этот код будет работать при любом запросе к данной странице постом.
Меняйте на что-то вроде:
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') die;
3. Отправку писем нужно повесить на событие оформления заказа или иное подходящее.

И я бы такой функционал в принципе не вязал бы с MS2, он тут по факту не нужен )

За публикацию личного опыта — спасибо.
Михаил
23 апреля 2021, 08:29
0
Надо будет протестировать. Спасибо!
Николай Савин
23 апреля 2021, 08:12
+1
Ровно так же как и родные поля таблицы адреса, через get
$properties = $msOrder->get('properties');
YuriyKarelin
23 апреля 2021, 03:20
0
Вечер добрый. Тоже столкнулся с этой проблемой. Мне помогло вмешательство в код (судя по всему автор модуля его забросил).
Я поменял количество запрашиваемых данных
в файле /core/components/msync/model/msync/msynccataloghandler.class.php
в функции prepareProducts()
в вызове $productsData = $this->getProductTempData(500, $lastProduct);
Поэкспериментируйте со значением.
Максим
22 апреля 2021, 23:39
0
Здравствуйте, спасибо большое за плагин!

Я тут во время теста обнаружил один момент, при оплате не подтягивает стоимость доставки
Дмитрий
22 апреля 2021, 22:30
0
Была такая же проблема. Решил отключением компонента «modRelation».
kudesia
22 апреля 2021, 22:28
0
Генерация PDF на ДЕМО сайте не работает.

No input file specified.
kudesia
22 апреля 2021, 22:27
0
Может компонент отправлять файл на почту заказчику?
Семён Кудрявцев
22 апреля 2021, 22:03
0
Автору респект за классные идеи и очень крутые компоненты.
Есть вопрос — поизучал компонент, наткнулся на пару моментов, про которые хотелось бы спросить
1)Светится абсолютный путь на сервере, по мне это не очень «секьюрно» раскрывать файловую структуру выше корня сайта.

2)Иногда последняя вкладка формирования файла — выгрузка и параметры, падает с ошибками

То есть файл она формирует, но отредактировать его уже не получается, там просто пусто и ошибка в консоли на скрипт.
Буду благодарен если автор прокомментирует эти моменты.
Sergey
22 апреля 2021, 21:54
0
Спасибо, работает ))

Еще не подскажете пожалуйста как получить и отправить доп. значения из заказа минишоп. Поля созданы как тут https://modx.pro/solutions/10040
Николай Савин
22 апреля 2021, 21:04
+1
В вашем случае size из заказа нужно вытаскивать примерно так
$options = $product->get('options');
$size = $options['size'];