15 октября 2015, 20:07 Рабочий вариант плагина: <?php switch ($modx->event->name) { case 'msOnChangeInCart': case 'msOnAddToCart': case 'msOnRemoveFromCart': $miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties); if (!($miniShop2 instanceof miniShop2)) return ''; // Инициализируем класс в текущий контекст $miniShop2->initialize($modx->context->key, $scriptProperties); $total_count = $miniShop2->cart->status()['total_count']; $tmp = $miniShop2->cart->get(); if ($total_count > 499) { // если 5 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount5 = $product->get('discount5'); $opt = $realPrice*$discount5/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 99) { // если 10 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount4 = $product->get('discount4'); $opt = $realPrice*$discount4/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 29) { // если 30 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount3 = $product->get('discount3'); $opt = $realPrice*$discount3/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 9) { // если 100 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount2 = $product->get('discount2'); $opt = $realPrice*$discount2/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 4) { // если 500 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount1 = $product->get('discount1'); $opt = $realPrice*$discount1/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } else { foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $tmp[$key1]['price'] = $realPrice; } } } $miniShop2->cart->set($tmp); break; }Осталось теперь придумать как это всё менять на лету, на странице с товаром и в корзине при оформлении заказа, может кто-нибудь в курсе как дописать этот скрипт, чтобы считалось всё на лету? <script type="text/javascript"> $('#msCart input[name="count"]').change(function(){ var count = $(this).val(); var singlePrice = parseInt($(this).closest('.tab_row').children(".tab_sum").text()); $(this).closest('.tab_row').children(".tab_pr").children("span").html(count * singlePrice); }); </script> Вопросы / Как сделать скидки от количества товара? 13 0 2
15 октября 2015, 17:11 Сделал через систему плагинов, плагин вот такой получился, по ощущениям всё правильно должно быть, но он не считает почему-то: <?php switch ($modx->event->name) { case 'msOnChangeInCart': case 'msOnAddToCart': case 'msOnRemoveFromCart': $miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties); if (!($miniShop2 instanceof miniShop2)) return ''; // Инициализируем класс в текущий контекст $miniShop2->initialize($modx->context->key, $scriptProperties); $total_count = $miniShop2->cart->status()['total_count']; $tmp = $miniShop2->cart->get(); if ($total_count > 4) { // если 5 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount1 = $product->get('discount1'); $opt = $realPrice*$discount1/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 9) { // если 10 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount2 = $product->get('discount2'); $opt = $realPrice*$discount2/100; $optPrice = ''; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 29) { // если 30 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount3 = $product->get('discount3'); $opt = $realPrice*$discount3/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 99) { // если 100 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount4 = $product->get('discount4'); $opt = $realPrice*$discount4/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } elseif ($total_count > 499) { // если 500 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $discount5 = $product->get('discount5'); $opt = $realPrice*$discount5/100; $optPrice = $realPrice-$opt; $tmp[$key1]['price'] = $optPrice; } } } else { foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $tmp[$key1]['price'] = $realPrice; } } } $miniShop2->cart->set($tmp); break; } Вопросы / Как сделать скидки от количества товара? 13 0
13 октября 2015, 15:48 Ты прав, делал с двойными ковычками, сейчас всё выводится как надо. Спасибо) Вопросы / Вопрос по JSON 5 0
13 октября 2015, 13:03 Так дело в том, что так и делаю $period['$cost'], а мне вместо значений NULL выдаёт. Вопросы / Вопрос по JSON 5 0
11 октября 2015, 01:11 А если нужно выводить несколько TV-параметров, то в этот параметр через запятую добавляете, пример: &includeTVs=`sale, image, parametr` Вопросы / Добавление +tv. в свойства товара 3 +1
11 октября 2015, 01:03 Может поможете разобраться? modx.pro/help/6731/ Что-то я совсем веру в свои силы потерял((( Вопросы / msCart плейсхолдер суммы одного типа товара 19 0
08 октября 2015, 17:11 citieslist.ru/ ekimoff.ru/225/ Я бы сделал что-ниюудь с этими базами) А вам самый простой способ в форме указать <select name="country"> <option value="Россия"></option> <option value="Германия"></option> <option value="Украина"></option> <option value="США"></option> </select>А в форме письма указать [[+country]] и вообще если используете FormIt то лучше его вместе с AjaxForm подружить. Поправьте меня если ошибаюсь. Вопросы / Выпадающий список в форме через tv. 1 -1
03 октября 2015, 01:14 Огромное спасибо! Глазам не вериться, работает))) Теперь придумать надо как сделать скидку в реальном времени зависящую от количества выбранного товара. Тут табличка есть optolider.bfa.su/katalog/igrushki/letayushhij-minon.html Формула такая: от 5 шт — 0% от 10 шт — 5% от 30 шт — 20% от 100 шт — 60% от 500 шт — 80% В админке через MIGX сделал табличку эту, теперь думаю как это можно сделать. Буду рад любой идее) Вопросы / msCart плейсхолдер суммы одного типа товара 19 0
03 октября 2015, 00:57 Убрал id, пытаюсь добавить товар, цена справа исчезает, в alert ставлю singlePrice, в окошке выдаёт NaN. Уже голова не соображает, что-то я не так делаю похоже((( Вопросы / msCart плейсхолдер суммы одного типа товара 19 0
03 октября 2015, 00:17 Так я id=«price-count» и указал optolider.bfa.su/oformlenie-zakaza.html Вопросы / msCart плейсхолдер суммы одного типа товара 19 0
02 октября 2015, 22:45 С JS проблемка, не очень хорошо его знаю. Привидённый код я так понимаю не полный, т.к. ругается на строчку total.text(count * price); Не очень понимаю что нужно дописать?! Единственное что я знаю о jQuery так это alert((( Вопросы / msCart плейсхолдер суммы одного типа товара 19 +1
02 октября 2015, 22:10 А есть решения, чтобы срабатывало? Уж очень такой функционал необходим. Вопросы / msCart плейсхолдер суммы одного типа товара 19 0
02 октября 2015, 22:09 Спасибо, давно PHx не пользовался, со времён MODX Evo и забыл о нём) А есть мысли по поводу выбора типа доставки? Почему может не срабатывать? Вопросы / msCart плейсхолдер суммы одного типа товара 19 0
02 октября 2015, 18:39 Спасибо, то что нужно) Вопросы / msCart плейсхолдер суммы одного типа товара 19 0
02 октября 2015, 17:15 Нужна сумма одной единицы товара умноженная на количество, на скрине даже выделил) Хотелось проще, но походу через API MODX прийдётся брать. Вопросы / msCart плейсхолдер суммы одного типа товара 19 0
01 октября 2015, 12:45 А я и не вам писал, а Владимиру) Готовые решения / UPD 19/10/2015: Готовые сборки на Modx Revo 87 0
30 сентября 2015, 19:17 Накликать можно всё что угодно) Только вот разработчики врядли будут подобное использовать, а вы как я понимаю делаете это для конечного пользователя. Так что главное это простота. Обилие кучи непонятных вкладок и ссылок зачастую пугают тех же менеджеров, которые наполняют сайты обычно, но если вы сами будете по просьбе заказчика делать определённые сборки, то это не плохо. Сам имел опыт со сборками MODX Evo, но это совсем разные системы и репозитория с кучей компонентов устанавливаемых в пару кликов не было. Готовые решения / UPD 19/10/2015: Готовые сборки на Modx Revo 87 0
30 сентября 2015, 18:27 По теме, тема отнюдь не новая, ещё помниться где-то видел подобное, был сервис сборок MODX с необходимыми дополнениями, на сайте надо было галочки раставлять нужных дополнений и потом собирался архив с предустановкой всего этого) Готовые решения / UPD 19/10/2015: Готовые сборки на Modx Revo 87 0
30 сентября 2015, 18:22 Почитайте лицензию MODX Revo, для неё по идее нельзя выпускать платные скрипты с закрытым кодом, это противоречит её философии чтоли. Поэтому и придумываются разные методы обхода существующей лицензии. А согласно лицензии исходные коды дополнений к системе должны быть открытыми и выложены на не коммерческой основе. Готовые решения / UPD 19/10/2015: Готовые сборки на Modx Revo 87 -3
Возможно ли реализовать возможность предоплаты за доставку на сайте? Так ради этого мне и нужно это все, чтобы клиент платил сразу при оформлении заказа, чтобы избавить себя от мусорных заявок (когда человек оставляет заявку, а предоплату делать не ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
Осталось теперь придумать как это всё менять на лету, на странице с товаром и в корзине при оформлении заказа, может кто-нибудь в курсе как дописать этот скрипт, чтобы считалось всё на лету?
&includeTVs=`sale, image, parametr`
ekimoff.ru/225/
Я бы сделал что-ниюудь с этими базами) А вам самый простой способ в форме указать
А в форме письма указать [[+country]] и вообще если используете FormIt то лучше его вместе с AjaxForm подружить.
Поправьте меня если ошибаюсь.
от 5 шт — 0%
от 10 шт — 5%
от 30 шт — 20%
от 100 шт — 60%
от 500 шт — 80%
В админке через MIGX сделал табличку эту, теперь думаю как это можно сделать. Буду рад любой идее)
Не очень понимаю что нужно дописать?! Единственное что я знаю о jQuery так это alert(((