Как взаимодействовать из плагина со страницей?
Есть плагин, на событие от minishop2 — msOnGetOrderCost
Как правильно из него взаимодействовать со страницей?
Все что нахожу в документации по плагинам, это —
Но мне нужно уведомить пользователя что сумма его заказа позволяет получить подарок.
Меня бы устроила возможность взаимодействовать со страницей на JS, например выполнить некий скрипт, но опять же через
Я знаю что у минишопа можно создавать свои функции обратного вызова
Спасибо.
Как правильно из него взаимодействовать со страницей?
Все что нахожу в документации по плагинам, это —
$modx->event->output('Вас ожидает подарок на следующей странице');
однако во всем примерах такой код вызывается как реакция на негативное событие. Ну тоесть не дать добавить товар или что-то еще. То есть всегда когда действие нужно остановить и для этих случае это срабатывает — я вижу красное уведомление jGrowl от минишоп и все ок.Но мне нужно уведомить пользователя что сумма его заказа позволяет получить подарок.
case 'msOnGetOrderCost':
if($cost>=$giftSum){
$modx->event->output('Вас ожидает подарок на следующей странице');
}
break;
и про срабатывании я вижу уведомление на красном фоне и остановку всей остальной логики — то есть все цены после этого в корзине становятся равны нулю. (имеется ввиду те, которые должны были обновится)Меня бы устроила возможность взаимодействовать со страницей на JS, например выполнить некий скрипт, но опять же через
$modx->event->output('Вас ожидает подарок на следующей странице');
нельзя передать код, только чистый текст, даже без html и при этом все равно все цены после вызова перестают обновлятся и становятся нулями.Я знаю что у минишопа можно создавать свои функции обратного вызова
miniShop2.Callbacks.add('Order.getcost.response.success', 'orders_add_ok', function(response) {
miniShop2.Message.success('Всё хорошо!');
console.log(response);
});
и вроде бы это должно было решить мою задачу, однако не пойму, как передать свой response сюда из плагина, чтобы вывелось мое сообщение, да и вообще чтобы показывать сообшение исключительно при совпадении условия, а не всегда. Для этого лично для моей задачи нужно подмешать в response еще и сумму, начиная с которой дается подарок, чтобы потом на JS сравнить с итоговой суммой и только тогда показать уведомление.Спасибо.
Комментарии: 2
Судя по исходнику, Вы никак не сможете выводит нужное сообщение через плагин:
$response = $this->ms2->invokeEvent('msOnGetOrderCost', array(
'order' => $this,
'cart' => $this->ms2->cart,
'with_cart' => $with_cart,
'only_cost' => $only_cost,
'cost' => $cost,
));
if (!$response['success']) {
return $this->error($response['message']);
}
$cost = $response['data']['cost'];
return $only_cost
? $cost
: $this->success('', array('cost' => $cost));
Но Вы можете в JS на Order.getcost.response.success вызвать свой процессор. Ну и там уже делать все, что вам нужно.
спасибо за идею. подумаю
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.