Цена за товары в зависимости от количества
Здравствуйте. Встала интересная задачка сделать цену на товары зависящую от кол-ва. Т.е
1-100 товаров цена 1000р за товар
100 — 1000 товаров цена 750р за товар
1000-5000 товаров цена 500р за товар
Вот такого рода функционал. Куда мне лучше копать? Писать modx плагин и на событие добавления товара его? А если покупатель в корзине изменит 1 на 800, там же ajax все пересчитается… Лезть куда то в скрипты?
Второй день ломаю голову, как бы это по лучше реализовать…
1-100 товаров цена 1000р за товар
100 — 1000 товаров цена 750р за товар
1000-5000 товаров цена 500р за товар
Вот такого рода функционал. Куда мне лучше копать? Писать modx плагин и на событие добавления товара его? А если покупатель в корзине изменит 1 на 800, там же ajax все пересчитается… Лезть куда то в скрипты?
Второй день ломаю голову, как бы это по лучше реализовать…
Комментарии: 3
Именно поэтому в miniShop2 можно расширить класс управления корзиной и прописать свою логику при добавлении \ удалении \ изменении количества товара.
Николай, удалось реализовать? Я так понимаю надо в функции add класса msCartHandler добавить типа такого условия if($count > 1000){$price = 1000}, но куда не понятно.
Да, все больше чем элементарно.
Вариантов решения несколько. Какой будет лучше конкретно вам — решайте сами.
1. В лоб редактирование класса корзины. Находится он тут:
2. Расширить класс корзины, и манипулировать ценой в новом классе. Преимущество перед предыдущим способом в том, что после обновления ms2 все перезапишется, а тут нет. Но и сложнее реализация.
Информацию по этому ищите в поиске, я не могу точно вспомнить где об этом писал Василий.
3. Плагины. Вам нужно создать плагин, который на событие msOnBeforeAddToCart будет пересчитывать цену.
Вариантов решения несколько. Какой будет лучше конкретно вам — решайте сами.
1. В лоб редактирование класса корзины. Находится он тут:
/core/components/minishop2/model/minishop2/mscarthandler.class.php
Интересовать вас будет функция add, и строчка $price = $product->getPrice();
Работаете непосредственно с ней.2. Расширить класс корзины, и манипулировать ценой в новом классе. Преимущество перед предыдущим способом в том, что после обновления ms2 все перезапишется, а тут нет. Но и сложнее реализация.
Информацию по этому ищите в поиске, я не могу точно вспомнить где об этом писал Василий.
3. Плагины. Вам нужно создать плагин, который на событие msOnBeforeAddToCart будет пересчитывать цену.
* Also you can modify $count and $options variables by add values to $this->modx->event->returnedValues
<?php
if ($modx->event->name = 'msOnBeforeAddToCart') {
$values = & $modx->event->returnedValues;
$values['count'] = $count + 10;
$values['options'] = array('size' => '99');
}
*
* */
Пример взят из файла с классом корзины. Я лично использовал 1 способ, т.к делал для себя.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.