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
gtsAPI 1.1.7 — таблицы на TanStack, инлайн-редактирование как в Excel Prime Vue datatable тупит на 200+ строк и в виртуальном скролинге высота полей фиксирована. Вот нам в итоге и не подошло. Директор сказал расчет должен сразу показываться без пагин...
mxApi — быстрый внешний API для MODX Revolution • зафиксировать публичный контракт EndpointInterface / метаданных по semver, чтобы наш провайдер не ломался на обновлениях;Фактически это уже так, beta стоит просто на всякий случа...
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс Вообще не понял о чем речь) В системной настройке service_js сейчас указана ссылка smartcaptcha.cloud.yandex.ru/captcha.js Я предложил очистить эту настройку, тогда компонент н...
mxBackup — обезличенные копии MODX в пару кликов Ещё нет, я там разом почти полтора десятка пакетов выложил модератор, вероятно, а шоке.
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
Осталось теперь придумать как это всё менять на лету, на странице с товаром и в корзине при оформлении заказа, может кто-нибудь в курсе как дописать этот скрипт, чтобы считалось всё на лету?
&includeTVs=`sale, image, parametr`
ekimoff.ru/225/
Я бы сделал что-ниюудь с этими базами) А вам самый простой способ в форме указать
А в форме письма указать [[+country]] и вообще если используете FormIt то лучше его вместе с AjaxForm подружить.
Поправьте меня если ошибаюсь.
от 5 шт — 0%
от 10 шт — 5%
от 30 шт — 20%
от 100 шт — 60%
от 500 шт — 80%
В админке через MIGX сделал табличку эту, теперь думаю как это можно сделать. Буду рад любой идее)
Не очень понимаю что нужно дописать?! Единственное что я знаю о jQuery так это alert(((