minishop2 задействовать доставку по расстоянию
Перекопал и этот сайт и много других, но ясного и четкого алгоритма как задействовать параметр distance_price так и не нашел. Можно ли это сделать не используя кастомный класс?
В файле core/components/minishop2/model/minishop2/msdeliveryhandler.class.php я раскомментировал строку $distance_price = $delivery->get('distance_price');
Как при этом должен выглядеть чанк ms_order_delivery, чтобы был инпут в который пользователь при выборе соответствующего способа доставки мог бы вписать расстояние в км. до пункта назначения? И конечно чтоб это все считалось затем правильно.
В файле core/components/minishop2/model/minishop2/msdeliveryhandler.class.php я раскомментировал строку $distance_price = $delivery->get('distance_price');
Как при этом должен выглядеть чанк ms_order_delivery, чтобы был инпут в который пользователь при выборе соответствующего способа доставки мог бы вписать расстояние в км. до пункта назначения? И конечно чтоб это все считалось затем правильно.
Комментарии: 35
Можно ли это сделать не используя кастомный класс?Нет.
Это поле и предусмотрено для кастомного класса, потому что я без понятия, кто когда и как будет рассчитывать доставку с его помощью.
Ну а хотяб банальный примерчик с самым простым использованием можно? Чтобы выводился инпут для юзера, он вносил значение в км, а оно уже умножалось на стоимость ед/рст из настроек способа доставки.
Лично я ничего такого не делал, но в магазине примеров завались.
Да, я это все видел. Это готовые сложные компоненты, которые в моем случае не нужны совершенно. Мне всего-то нужно чтоб две цифры друг на друга перемножались, одна мной указанная, одна пользователем и потом это плюсовалось к общей стоимости… Вроде как дважды два звучит, но как это реализовать совершенно непонятно. Какие плейсхолдеры в чанке должны добавиться, как их значение в класс-обработчик должно попадать и выводиться… Нужно просто пару строк готового решения, а не здоровенный компонент
Да и вообще я думаю это самое стандартное использование этого параметра, так сказать в базовом варианте. Наверное в этом виде бы его и в пакет minishop'а стоило бы включить, а дальше если вдруг заморочки какие-то более сложные — тогда уже чтоб через кастомные классы можно было б менять
Не базовый это функционал.
Иначе, если что-то сделать в базе, всегда найдется еще какая-то близкая мелочь, которую
Иначе, если что-то сделать в базе, всегда найдется еще какая-то близкая мелочь, которую
в этом виде бы его и в пакет minishop'а стоило бы включитьТак что, относитесь к этому полю как к простейшему упрощению для расширяющего класса.
Самое стандартное — это чтобы юзер сам вводил расстояние доставки до себя в километрах?
Ты где такие магазины вообще видел, покажи если не трудно?
Ты где такие магазины вообще видел, покажи если не трудно?
Попадались, счас уже не вспомню… Вообще вот например есть даже плагин такой готовый, который явно в каких-то магазинах установлен
Вряд ли кто напишет, ибо такой примерчик — почти половина готового дополнения с нужным функционалом. Если есть необходимость и желание — здесь можно разместить соответствующее объявление.
Такой примерчик очень нужен в базовом дистрибутиве, был бы полезен и очень удобен! Ну ведь есть же функционал по фиксированному добавлению стоимости за доставку и все пользуются — ну ведь прав да же стандартно и нужно… Хотя кому-то нужно чтоб до 10000 р. стоимость доставки такая-то, после 10000 р. такая-то, после 30000 например и вообще бесплатно, ну либо еще что там — вот тут и нужны классы, да, согласен! Но почему с километражем так ситуация не обстоит — непонятно(
Откуда брать расстояние?
Как считать — прямое расстояние от магазина до покупателя или расстояние по дорогам? С учетом пробок или нет? А может, расстояние вообще по водным путям должно рассчитываться?
Невозможно заранее заложить всю эту логику, поэтому любые вариации стоимости доставки, кроме фиксированной, должны реализовываться в расширяющих классах.
Как считать — прямое расстояние от магазина до покупателя или расстояние по дорогам? С учетом пробок или нет? А может, расстояние вообще по водным путям должно рассчитываться?
Невозможно заранее заложить всю эту логику, поэтому любые вариации стоимости доставки, кроме фиксированной, должны реализовываться в расширяющих классах.
Есть адрес магазина, либо склада. Естественно этот вариант будет использоваться только для доставки по городу, либо за город. Неужели пользователь не в курсе как далеко он от этого места? Не думаю.
Пользователь не знает. Простейший пример из жизни: на навигаторе ищу какой-то объект, в списке вижу расстояние 6 км, но когда создается маршрут, то по дорогам получается уже 11 км.
Внимание, вопросы:
1. Какое расстояние в аналогичной ситуации укажет покупатель?
2. Откуда он знает точное расстояние?
3. Так ли хорошо все знают свой город, чтобы мгновенно рассчитывать расстояние между двумя точками?
4. Если укажет 6 км, разница в 5 км — издержки магазина?
5. А если укажет 3 км?
Расстояние от КАД (МКАД) — аналогичная ситуация, только расхождение еще больше.
Внимание, вопросы:
1. Какое расстояние в аналогичной ситуации укажет покупатель?
2. Откуда он знает точное расстояние?
3. Так ли хорошо все знают свой город, чтобы мгновенно рассчитывать расстояние между двумя точками?
4. Если укажет 6 км, разница в 5 км — издержки магазина?
5. А если укажет 3 км?
Расстояние от КАД (МКАД) — аналогичная ситуация, только расхождение еще больше.
Да, такой вариант возможен. Но есть менеджер, который это все дело как раз и должен проверить и уточнить. При необходимости он свяжется с пользователем. И все же это меньшинство случаев. Но если не сделать данное поле, то связываться придется абсолютно с каждым пользователем и в каждом заказе исправлять его конечную стоимость — что, согласитесь, еще хуже.
Суть — сделать возможным расчет полной стоимости заказа и мгновенной оплаты.
Если менеджер должен будет проверять каждый заказ, а потом просить доплатить разницу, получится абсурд. Проще будет тогда оплачивать доставку по факту, отдельно от заказа.
Либо же реализовать нужную для определенного магазина логику расчета, чтобы тому же менеджеру не надо было вообще задумываться о проверке стоимости доставки.
Если менеджер должен будет проверять каждый заказ, а потом просить доплатить разницу, получится абсурд. Проще будет тогда оплачивать доставку по факту, отдельно от заказа.
Либо же реализовать нужную для определенного магазина логику расчета, чтобы тому же менеджеру не надо было вообще задумываться о проверке стоимости доставки.
Да и где это все требуется как раз и используется то, о чем говорит Василий. Я же говорю о самом стандартном варианте, где вся эта логика не требуется. Система скидок то же ведь не идет «из коробки», хотя она и требуется в очень большом количестве случаев, мы ее отдельно прикручиваем. Но тем не менее простая логика например умножения стоимости товара на его количество все же идет как раз «из коробки».
Не путайте мух с котлетами.
Базовая логика — сложение и перемножение фиксированных значений, которые напрямую покупателем не вводятся. Дополнительные условия — расширенная логика.
Базовая логика — сложение и перемножение фиксированных значений, которые напрямую покупателем не вводятся. Дополнительные условия — расширенная логика.
Хорошо, я действительно понимаю, что возможно я не прав на счет включения этого функционала в магазин, т.к. нужно оно не всем. Но тем не менее важность этой штуки для меня сейчас, все же не уменьшается. Думаю очень полезно было бы выложить внешний вид чанка и класса для реализации этой задачи в «готовых решениях». Тем более подобные вопросы в сообществе уже были. Просто действительно не понятно как это правильно организовать(
Если действительно нужно — могу сделать, но не бесплатно.
Напишите в скайп: whiteflag.ru
Напишите в скайп: whiteflag.ru
Я бы хотел разобраться сам, а затем выложить во всеобщее пользование способ. Бесплатно и для всех!
Ну так и разберись сам — зачем вопросы тогда задавать?
Странные люди, ей богу.
Странные люди, ей богу.
Было бы от чего оттолкнуться, уже бы разобрался. Вот уже 6-й час ковыряю модкспро и безумкина в поисках хоть чего-то, что помогло бы. Инфы много, но почти везде есть непонятные мне моменты, что приводит в тупик… Плагином пробовал, исходники менять пробовал… А что-то толку нет, не могу процесс понять и осилить, как ловить это значение и как использовать
Исходники компонентов дают ответы быстрее и полнее, чем форумы.
Сам разобраться не можешь, готовые дополнения покупать не хочешь, за помощь платить тоже не хочешь.
Я так понял, единственный приемлемый для тебя вариант, это заколебать кого-нибудь, чтобы он выложил готовое решение.
Меня — не получится, извини.
Я так понял, единственный приемлемый для тебя вариант, это заколебать кого-нибудь, чтобы он выложил готовое решение.
Меня — не получится, извини.
А тебя и стыдно) Ты итак слишком много пользы всем в мире принес! Да не, я надеялся просто что подскажут те люди кто уже осилил дорогу на которой я сейчас и у которых я не отниму больше времени чем на скопировать-вставить код.
В чанке плейсхолдер сделал плейсхолдер km
В таблице modx_ms2_orders создал соответствующую колонку, но туда тоже ничего не попадает.
Как увязать всю эту систему?
<input type "text" name="distance_price" value="[[+km]]" id="distance_price">
Почему в моем кастомном классе не получается достать его вот так?$add_km = $delivery->get('km');
В таблице modx_ms2_orders создал соответствующую колонку, но туда тоже ничего не попадает.
Как увязать всю эту систему?
Увязать можно, но сломав возможность обновлений minishop2.
Причина: стандартные таблицы менять нельзя.
Причина: стандартные таблицы менять нельзя.
Ладно, наверное все же стоит перенять опыт от более разбирающихся в этой области людей. Написал Вам в скайп.
Никаких сообщений не получал.
Можт без авторизации не доходят? Сейчас пришлю запрос на авторизацию.
Ничего себе вы тут развели..)
Скоро выложу готовое решение, которое для меня любезно сделал Воеводский Михаил, за что ему огромная благодарность!
Нужно только разобраться почему у меня в логах появляются ошибки. И насколько это может быть связано с добавленным функционалом.
В ошибках массивы данных примерно следующего характера, что это?
Нужно только разобраться почему у меня в логах появляются ошибки. И насколько это может быть связано с добавленным функционалом.
В ошибках массивы данных примерно следующего характера, что это?
[2015-08-09 00:48:10] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
)
[2015-08-09 00:48:11] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
)
[2015-08-09 00:48:11] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
)
[2015-08-09 00:48:12] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 1
[properties] => {"distance":1}
)
[2015-08-09 00:48:17] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 1
[properties] => {"distance":1}
)
[2015-08-09 00:48:17] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] =>
[properties] => {"distance":0}
)
[2015-08-09 00:48:19] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] =>
[properties] => {"distance":0}
)
[2015-08-09 00:48:22] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] =>
[properties] => {"distance":0}
)
[2015-08-09 00:48:23] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] =>
[properties] => {"distance":0}
)
[2015-08-09 00:48:23] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 1
[properties] => {"distance":1}
)
[2015-08-09 00:48:23] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 1
[properties] => {"distance":1}
)
[2015-08-09 00:48:23] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 11
[properties] => {"distance":2}
)
[2015-08-09 00:48:30] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 11
[properties] => {"distance":2}
)
[2015-08-09 00:48:30] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 1
[properties] => {"distance":1}
)
[2015-08-09 00:48:30] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 1
[properties] => {"distance":1}
)
[2015-08-09 00:48:30] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 12
[properties] => {"distance":2}
)
[2015-08-09 00:48:35] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 1
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 12
[properties] => {"distance":2}
)
[2015-08-09 00:48:35] (ERROR @ /assets/components/minishop2/action.php) Array
(
[delivery] => 4
[payment] => 4
[receiver] => Тест Тестович
[email] => electropochta@mail.ru
[properties.distance] => 12
[properties] => {"distance":2}
)
[2015-08-09 00:49:54] (ERROR @ /connectors/lang.js.php) Error caching action map mgr/actions
Это не ошибки. Видимо, где-то в коде я забыл убрать
$modx->log(1,print_r($var,1));
, где $var — любая переменная/массив.
Да, действительно, нашел
Даниил, и где Вы выложили готовое решение? Мне позарез нужно сегодня решение!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.