Наумов Алексей

Наумов Алексей

С нами с 31 марта 2013; Место в рейтинге пользователей: #13
Наумов Алексей
25 декабря 2023, 16:59
0
плагин на системное событие msOnBeforeCreateOrder, но похоже, что в него не поступают данные о стоимости доставки
Похоже, что должны поступать, судя по коду из msorderhandler.class.php:

// Раз
$delivery_cost = $this->getCost(false, true);
$cart_cost = $this->getCost(true, true) - $delivery_cost;
$num = $this->getNewOrderNum();

/** @var msOrder $msOrder */
// Два
$msOrder = $this->storageHandler->getForSubmit(
    compact('user_id', 'num', 'cart_cost', 'cart_status', 'delivery_cost')
);
// Три
$response = $this->ms2->invokeEvent('msOnBeforeCreateOrder', [
    'msOrder' => $msOrder,
    'order' => $this,
]);
Наумов Алексей
25 декабря 2023, 12:13
0
Может источник файлов не правильно настроен? Сложно сказать. Ошибки php в логах посмотрите.
Наумов Алексей
25 декабря 2023, 11:42
+1
Речь про объект cart в response? Там да, есть данные вроде товар id=3, кол-во 5. Вот только в метрику (как я понял) нужно передавать другое: не текущее кол-во товаров, а сколько именно его добавили в корзину или удалили. Ну типа было 5 товаров, мы 2 убрали нажатием на "-", осталось 3. Вот минишоп возвращает 3, а где взять 2 — вопрос.
Наумов Алексей
25 декабря 2023, 11:26
+1
Спасибо!
В принципе да, с miniShop2.Callbacks.Order.submit.response.success можно попробовать переписать скрипт, по идее должно сработать.

Про прием с расширением msCartHandler знаю, ведь хотелось обойтись без любого php кода, но такого способа в текущей реализации miniShop2 нет.
Наумов Алексей
24 декабря 2023, 12:57
0
В качестве визуального редактора в админке MODX можно использовать любой редактор, например, CKEditor
Наумов Алексей
23 декабря 2023, 12:30
0
На этапе создания конфига нужно добавлять поля, по которым фильтруем.
Если делаем много конфигов (для разных категорий, я же верно понял?) — придется много раз одни и те же поля добавлять. Предложил бы сделать отдельный список настроенных полей (фильтров), а уже в конфиге из него выбирать в 1 клик.
Наумов Алексей
20 декабря 2023, 20:18
0
Верно всё, я про эту особенность написал в тексте.
Пока у меня нет других идей, добавлять серверную часть я не хотел.
В общем это первая версия скрипта, может кто применит, появится больше опыта и наработок, скрипт станет лучше)

Кстати, в магазине modstore есть 2 дополнения, которые работают с google и отправляют данные средствами php.
Наумов Алексей
20 декабря 2023, 10:35
+1
Хук должен вернуть true, в хуке не должно быть иного вывода. Иначе исполнение прочих хуков приостанавливается. Посмотрите, что у вас в amocrm и unisender
Наумов Алексей
18 декабря 2023, 12:35
+1
На самом деле действительно, для разработки более-менее серьезных решений, подобный подход с отложенным выполнением заданий, занимающих длительное время — must have.
Правда 99% сайтов все равно это не используют (вообще ни на одном не своем сайте ни разу не видел Scheduler, а сам применял единожны)… разработчики не хотят для простых визиток или несложных магазинов усложнять себе работу…

Вижу еще 1 плюс в таком подходе, правда не знаю, сработает ли он с Scheduler… допустим при отправке данных в CRM та была временно недоступна. В этом случае с планировщиком заданий задачу можно перенести на некоторое время вперед и повторить отправку данных позже еще раз. Если же данные в CMR отправлять в момент создания заказа — естественно так уже не сделать.
Наумов Алексей
11 декабря 2023, 13:36
0
не совсем я понял суть задачи…
но почему бы не сделать через регулярное выражение?
отсюда: ^en/(.*)$
сюда: ru/$1
но естественно, что это сработает, только если все страницы сайт.ру/en/ не будут опубликованы, т.к. компонент работает через плагин на OnPageNotFound
Наумов Алексей
08 декабря 2023, 14:23
0
очень долго — это ну не знаю, 5 или 15 секунд
я по приколу подождал около 2х минут, ничего не произошло, тестовый сайт не работает. ни уведомлений, ни предупреждений — тишина…

для платного компонента презентация не очень) я раньше покупал и использовал ms_CDEK2, было интересно сравнить, но не судьба похоже
Наумов Алексей
08 декабря 2023, 11:41
+1
тестовый сайт что-то не аллё, не могу выбрать никакой способ доставки, radio заблокированы
Наумов Алексей
06 декабря 2023, 11:02
1
+1
Почитайте теперь здесь:
docs.modx.pro/components/minishop2/development/events

Вот реально там в первом же примере написано, что нужно сделать.
Наумов Алексей
04 декабря 2023, 12:20
0
И Redirector, и autoRedirector и easyRedirects имеют в своём составе плагин, который висит на событии OnDocFormSave и отслеживают изменение url ресурса.

Но есть одно но) Все компоненты для того чтобы узнать какой был старый url у страницы — они его сохраняют где-то заранее, к примеру на событии OnBeforeDocFormSave (в properties ресурса) или OnDocFormRender (в сессию). И только потом на OnDocFormSave уже идет сравнение старого адреса и нового и при необходимости создание редиректа.
Ну в общем то любой компонент для импорта событие OnDocFormRender точно не вызовет.
В принципе OnBeforeDocFormSave в autoRedirector вроде как должен срабатывать, если msImportExport обновляет товар через процессор resource/update… но не знаю, не разбирался.

В общем для них лучше свой плагин написать с созданием правил редиректа (благо там и нужно то заполнить 2 поля минимально), насколько помню у того же msImportExport есть событие, куда приходят данные при обновлении товара.
Наумов Алексей
01 декабря 2023, 10:47
0
привет! Конкретно для главной страницы конечно спорный вопрос… я бы через компонент не делал. Обычно такие редиректы нужны когда сайт переезжает на другой адрес. В этом случае рациональнее сделать редирект всего сайта средствами nginx или через htaccess, смотря какой сервер.

Дело в том, что у главной страницы uri — index, а url, который открываем в браузере — пустой.
Чтобы компонент смог обработать такой редирект — нужно прям отдельное условие добавить в код…
Наумов Алексей
30 ноября 2023, 10:30
+1
как минимум эта строка написана с ошибкой:
'parents'  => '{$_modx->resource.id} ',
внимательно посмотрите, вы в параметр parents передаете строку "{$_modx->resource.id}", правильно это делать без кавычек и скобок:
'parents'  => $_modx->resource.id,
Наумов Алексей
29 ноября 2023, 12:25
1
+1
Есть такая штука:
modstore.pro/packages/ecommerce/seotabs

Но вообще принцип:
плагин на OnPageNotFound, в котором разбирается текущий url и происходит отображение нужной информации.