Dima

Dima

С нами с 29 декабря 2020; Место в рейтинге пользователей: #706

Ошибка в расчете стоимости доставки и заказа

Возникает ошибка в расчете стоимости доставки и заказа

Действовал по инструкции https://docs.modx.pro/components/minishop2/development/services/connection

1) создал класс доставки
{core_path}components/minishop2/custom/delivery/cdekwidget.class.php
<?php
if(!class_exists('msDeliveryInterface')) {
    require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
}
class msDeliveryHandler_cdekwidget extends msDeliveryHandler{
    public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
        session_start();
        $cart = $this->ms2->cart->status();
        $cart_cost = $cart['total_cost'];
        $delivery_cost = $_SESSION['cdek_delivery_price'] ?? 0;
        $total_cost = $cart_cost + $delivery_cost;
        return (float) $total_cost;
    }
}
Тут изначально возвращал
$delivery_cost
, но тогда неверно считалось, действия в корзине идут именно с
return (float) $total_cost;


2) Зарегистрируем службу через console

if ($miniShop2 = $modx->getService('miniShop2')) {
  $miniShop2->addService('delivery', 'CDEKwidget',
      '{core_path}components/minishop2/custom/delivery/cdekwidget.class.php');
}

3) Выбрал обработчик в способе доставки msDeliveryHandler_cdekwidget

Теперь действия в корзине

При выборе способа доставки и расчетов, корректно обновляется общая стоимость заказа, с учетом доставки (через минишоповский скрипт), далее если в консоли посмотреть запросы, то
/assets/components/minishop2/action.php
возвращает все верно
{
	"success": true,
	"message": "",
	"data": {
		"cost": 255,
		"cart_cost": 10,
		"discount_cost": 0,
		"delivery_cost": 245
	}
}
Но после оформления заказа в админке отображается как стоимость товаров 0, а стоимость доставки 245.
Никаких сторонних плагинов нет.

MODX Revo 2.8.4
Minishop2 3.0.7-pl
PHP Version 7.4.33

Скрин с заказом в админке
Dima
10 апреля 2025, 17:27
modx.pro
1 379
0

Создание товаров через ЛК из контекста web

Задача — дать пользователям возможность создавать товары через ЛК из контекста web.
Не получается запустить процессор $newProduct = $modx->runProcessor('resource/create', [...]);
permission_denied_processor

Пытался задавать разные права группе пользователей, пока никак. Если поставить Неограниченные права, то все запускается.
Информации, какие права требуются для процессора не нашел, пробовал выдавать права new_document_in_root и тд.

Если кто сталкивался, подскажите в сторону каких прав копать.
Dima
08 марта 2025, 16:17
modx.pro
318
0

Точки продаж и учет остатков

Всем привет, подскажите пожалуйста, может кто решал подобные задачи.

Требуется полноценный учет товаров и остатков по каждой точке продаж.
Для учета остатков я ранее пользовался msProductRemains — тут все ок, а вот с точками продаж пока не сталкивался, информации тоже пока не нашел.

Есть, конечно, мысль использовать msOptionSeller для точек продаж и к ним подтягивать остатки, но может был у кого реальный кейс — поделитесь направлением
Dima
01 февраля 2024, 11:22
modx.pro
351
0

Управление событиями UserEvents через фронт

Всем привет, подскажите, может кто делал подобное.
Стоит UserEvents, задача удалять событие или изменять его стутус на фронте, не через админку (возможно форма или кнопка у события).
Ну и в целом, какой порядок действия для изменения данных через фронт, например изменить содержимое TV.
Dima
17 августа 2021, 21:23
modx.pro
446
0

Добавление точек продаж с ЛК клиента

Всем привет. Подскажите может кто делал уже и может подсказать как реализовать.

Задача состоит в том, чтобы клиент через свой ЛК на сайте мог добавлять собственные точки продаж (например город, магазин, время работы, телефон) — таких магазинов у клиента может быть 1, а может и 10.

Далее на отдельной странице надо на карте показать все магазины всех клиентов — выпадающий список городов и при выборе города отображаются все метки магазинов в этом городе.
Dima
19 июля 2021, 10:48
modx.pro
417
0

reCaptcha v3 - отложенная загрузка

Подскажите, кто-то делал отложенную загрузку скриптов капчи v3, уж сильно она сайт, если на странице 3 и более форм с капчей
Dima
21 июня 2021, 15:30
modx.pro
927
0

mFilter2 + SHK3

Добрый день, помогите разобраться…

Необходимо сделать вывод категорий по фильтру товаров. За основу брал решение https://modx.pro/solutions/6733, только не могу переделать на SHK3…

Выводит фильтры правильно, но пишет, что нет подходящих результатов

Код сниппета:
<?php
// Он работает только, если это вывод товаров, а не запрос подходящих id
if (empty($returnIds)) {
	// Присоединяем таблицу категорий
	if (empty($innerJoin) || !$where = $modx->fromJSON($innerJoin)) {
		$innerJoin = array();
	}
	$innerJoin['Category'] = array(
		'class_key' => 'modDocument',
	);
	$scriptProperties['innerJoin'] = $modx->toJSON($innerJoin);
	// Группируем по категории
	$scriptProperties['groupby'] = 'Category.id';
	// Заменяем поля товаров полями категорий
	$scriptProperties['select'] = $modx->toJSON(array(
		'Category' => '*',
		// Можно переопределить еще и выборку полей товара, чтобы были с префиксом,
		// но я это закомментировал, потому что поля Data и так доступны, а товары не нужны
		//'msProduct' => $modx->getSelectColumns('msProduct', 'msProduct', 'product.'),
		//'Data' => $modx->getSelectColumns('msProductData', 'Data', 'data.'),
	));
}

// Мы добавили свой опции, а дальше пусть работает стандартный сниппет
return $modx->runSnippet('pdoResources', $scriptProperties);
Код вызова:
[[!mFilter2?
          &paginator=`pdoPage@catalog_pages`
          &element=`msProductsCategories`
          &parents=`[[*id]]`
          &limit=`0`
          &depth=`2`
          &returnIds=`0`
          &where=`{"template":"9"}`
          &includeTVs=`price,price_max,title,art,col,image-min,text,descript,brand,diametr,seting1,seting2,seting3,seting4,seting5,seting6,seting7,seting8`
          &tpls=`tovar_shop_row,tovar_shop`
          &tplOuter=`tpl_Filter_Outer`
          &aliases=`
              tv|seting1==seting1,tv|seting2==seting2,tv|seting3==seting3,tv|seting4==seting4,
              tv|seting5==seting5,tv|seting6==seting6,tv|seting7==seting7,tv|seting8==seting8`
          &filters=`
              tv|seting1:boolean,
              tv|seting2:seting2,
              tv|seting3:seting3,
              tv|seting4:seting4,
              tv|seting5:seting5,
              tv|seting6:seting6,
              tv|seting7:seting7,
              tv|seting8:seting8,
              tv|price:number
              `
        ]]
Помогите доделать
Dima
20 апреля 2021, 20:55
modx.pro
539
0

modinstagram2 вывод информации

Добрый день, подскажите, как можно и можно ли вывести информацию об аккаунте?
Например количество подписчиков, подписок может еще что
Dima
20 апреля 2021, 14:06
modx.pro
476
0

Спам

Добрый день, использую на сайте formit+ajaxform, для защиты от спама пробовал ранее и скрытые поля использовать и grecaptcha v2 и grecaptcha v3. Спам идет и капча пройдена. Зачастую спам идет с определенный ip адресов.

Подскажите, как можно заблокировать определенные ip, чтобы они не могли или отправлять письма или вообще заходить на сайт. Ну или может какие еще идеи по защите от спама есть
Dima
02 апреля 2021, 10:36
modx.pro
987
0

cityfields через get

Такой вопрос, можно ли определять город не по поддомену, а через параметр в ссылке. Это не совсем удобно, но сейчас нужен именно такой вариант. Например site.ru/usluga?city=moscow
Dima
14 марта 2021, 16:42
modx.pro
761
0