Алексей Шумаев

Алексей Шумаев

С нами с 30 ноября -0001; Место в рейтинге пользователей: #24
Алексей Шумаев
07 октября 2017, 11:42
0
Про гео.
Недавно перешёл на api dadata. Позволяет посетителю по желанию сразу указать на сайте адрес, вплоть до дома. (отсюда сразу получаем верный индекс, кому надо). Полная база городов/адресов, в отличии от GeoLocation (насколько я помню, там далеко не все города).
Указание полного адреса — как раз убирает целый шаг в корзине.
На данный момент есть только 2 проблемы: мобильные (тут всё ясно) и с какого-то момента куча IP не верно определяется что dadata'ой, что sxGEO. Проверяли на некоторых московских адресах — полный трэш — то Чукотка, то чуть не Китай ) Думаю, временно, т.к. онлайн тестилки нормально определяют.

Алексей Шумаев
05 октября 2017, 13:24
0
Понятно, я не успел вчитаться за обедом )
А тема интересная, последние 3 проекта требовали одновременной работы с несколькими службами доставки + почта.
Алексей Шумаев
05 октября 2017, 13:04
+1
Я думаю над тем, как облечь этот набор в компонент (уже 2 года сразу ставлю свой набор, т.к. знаю, что всегда будут кастомизации), чтобы его было просто изменять. Тогда возможно; иначе не вижу смысла, вряд ли кто-то будет разбирать мой код (мастерам не нужно, начинающие будут путаться).
С другой стороны, если будет компонент — выкладывать его — это значит неизбежно навлечь на себя кучу вопросов от народа по индивидуальным особенностям их проектов. Отвечать на такие уникальные вопросы крайне трудно и затратно по времени, сами понимаете ). Не отвечать — негатив.
Я стараюсь делиться с сообществом наработками в благодарность за его помощь, но этот вопрос слишком объёмен…
Вот что имеет смысл, так это описать сам принцип реализации, без кодов. Матёрым разрабам оно без надобности, а начинающим может помочь.
Алексей Шумаев
05 октября 2017, 12:19
0
Поступаю аналогично:
Есть свой набор скриптов, рассчитывающий стоимость доставки по IML, СДЭК, Деловые Линии, Почта РФ. А также хранящий локально и регулярно обновляющий пункты вывоза и даже стоимость доставки для каждого города в случае типизированных товаров/заказов (это позволяет не обращаться каждый раз к серверам служб доставки).
Всё это хозяйство работает с расширенными классами доставки, оплаты и корзины MS2.
Т.к. практически всегда в реально работающем магазине (более-менее сложном) есть свои тонкости, использовать модули невозможно. Это не недостаток какого-либо дополнения: принципиально невозможно предусмотреть все варианты для всех проектов.
Алексей Шумаев
02 октября 2017, 13:55
0
А почему не сделать расширением корзины? Я так решаю подобные задачи.
Пример в доках: docs.modx.pro/components/minishop2/development/service/connection#Пример-подключения-собственного-класса-доставки
Алексей Шумаев
22 сентября 2017, 12:18
0
Потому пример и не привожу — очень индивидуально.
В моих случаях вполне нормально работает.
Алексей Шумаев
22 сентября 2017, 11:57
0
Я сниппетом сортирую.
Алексей Шумаев
11 сентября 2017, 12:37
0
Благодарю, лишним точно не будет!
Алексей Шумаев
11 сентября 2017, 11:47
0
Мы же разработчики. Маркетологи задачу поставили, мы реализовали.
Если будут новые вводные, возможно придётся вернуться к js, совсем не спорю )
Алексей Шумаев
11 сентября 2017, 11:32
0
Такой задачи не ставили, не могу сказать, насколько это важно.
Если будут данные, отпишусь.
Алексей Шумаев
05 сентября 2017, 17:30
0
Поставил debugParser на тесте. У меня ничего не прибавляется. Зато скидка нормально считается.
Смотрите, что у вас. Если используете debugParser с ?debug=1, то имейте ввиду, что если что-то обновляете с галкой очистки кэша, то в первый раз получите кол-во запросов без кэша. Обновим страницу и получим снова с кэшем. Может отсюда +32 запроса?
Алексей Шумаев
05 сентября 2017, 17:03
0
Не за что!
Алексей Шумаев
05 сентября 2017, 16:08
0
А что у вас в этом сниппете?
Мне интересно, откуда дополнительные запросы появляются.
Алексей Шумаев
05 сентября 2017, 16:00
0
Наверное лучше примерно так:
$tv_id = 1; #id нужного TV
$resource = $modx->getObject('modResource',$orderProduct->get('product_id'));
$tv = $resource->getTVValue($tv_id);
/* обновляем значение TV  */
$resource->setTVValue($tv_id,'Новое значение');
Алексей Шумаев
05 сентября 2017, 14:50
0
Не за что! На то оно и сообщество.
Алексей Шумаев
05 сентября 2017, 14:24
0
Зачем ещё запрос?
«Эти параметры дополнительно определяют, какие данные и каким способом будут выводиться.»
Т.е. обрабатываются уже полученные результаты запроса, перед отдачей в чанки.

Создайте сниппет prepareData
<?php
if (!is_array($row)) {
	return '{}';
}
$row['discount'] = round(100 - (100 * $row['price']/ $row['old_price']));
return json_encode($row);
и вызовите любой сниппет, использующий pdoTools (pdoResource,msProducts в данном случае) с параметром prepareSnippet = prepareData

Ну и обработайте $row['price'] и $row['old_price'] перед формулой, если нужно убрать пробелы и т.п.
Алексей Шумаев
05 сентября 2017, 13:53
0
Если не верно указать адрес retailCRM (modretailcrm_urlCrm), то будет
PHP message: PHP Fatal error:  Uncaught Error: Class 'InvalidJsonException' not found in /home/xxx/xxx/xxx/components/modretailcrm/model/modretailcrm/Response/ApiResponse.php:52
Ошибка не очевидная… Наверно желательно добавить проверку нужных настроек в начале + добавить исключение, я так понимаю.