Василий Наумкин · 07 ноября 2016, 09:27 $modx->event->returnedValuesи будет пустым, пока туда кто-то что-то не запишет. Держи рабочий пример из платного msDiscount case 'msOnGetProductPrice': if ($modx->context->key == 'mgr') {return;} /** * Counts discount of current product for current user, based on rules in msDiscount component * New price must be set in $modx->event->returnedValues['price'] * * @var msProductData $product Object with product properties * @var array $data Array with product properties. Can be empty! * @var float $price Current price of product */ if (!isset($modx->event->returnedValues['price'])) { $modx->event->returnedValues['price'] = $price; } // Get link to product price $price = & $modx->event->returnedValues['price']; $new_price = $msDiscount->getNewPrice($product->id, $price); if ($new_price !== false) { $price = $new_price; } break;Обрати внимание, что в событии доступны 3 параметра: $product, $data и собственно $price Вопросы / Поменять цену у товара через плагин 9 +1 2
Алексей Ерохин · 30 сентября 2016, 17:47 github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/processors/mgr/orders/getlist.class.php#L175 Вопросы / Заказы - как добавить еще пункт к меню? 2 +1 1
Василий Наумкин · 14 сентября 2016, 08:24 При обычном вызове в where передаётся массив, закодированный в JSON. При вызове через Fenom кодировать его нет нужды: {$_modx->runSnippet('!pdoResources', [ 'parents' => 0, 'includeTVs' => 'test', 'where' => ["1 = 1 AND FIND_IN_SET("~$_modx->resource.id~", replace(test, '||', ','))"], 'showLog' => 1 ])} Вопросы / Запись на Fenom 3 +2 2
Сергей Шлоков · 03 сентября 2016, 10:44 Смотрите, Сергей, если задача — разрешить добавлять комментарий 1 раз в n дней, то решается она несколькими строчками. Вариант 1. Через сниппет как у вас. $sql = "SELECT 1 FROM modx_ec_messages C LEFT JOIN modx_ec_threads D ON C.thread=D.id WHERE D.resource = {$modx->resource->id} AND C.date>DATE_SUB(NOW(),INTERVAL {$day} DAY) AND ip = ?" ; $stmt = $modx->prepare($sql); $stmt ->execute($_SERVER['REMOTE_ADDR']); if ($stmt->rowCount() ) { // Запрещено return ''; } // Выполняем указанные сниппет return $modx->runSnippet($snippet, $scriptProperties);Ну и вызывать так // Вместо unlock указываем snippet и любые другие параметры указанного сниппета [[!voting_ban? &snippet=`ecForm` &day=`7`]]Вариант 2. Через плагин. Если у этого компонента есть событие добавления комментария по аналогии с Tickets, то форма показывается, но при добавлении комментария плагин проверяет возможность добавления. Вот как минимум 2 варианта. П.С. Ещё было бы логично проверять почту. У пользователя ip может быть динамическим. А лучше разрешать оставлять отзыв только авторизованным пользователям. Тогда ещё проще. Вопросы / Ограничение голосования по IP для easyComm 8 0 1
mngatoff · 15 августа 2016, 11:49 потому что Вы УЖЕ внутри синтаксиса fenom. таким образом: '@INLINE <a href="{$link}?vendor={$value}">{$title} <sup>{$num}</sup></a>'здесь будет распарсен чанк с подстановкой плейсхолдеров этого чанка. А в нем этого самого link не предполагается. ('@INLINE <a href="'~ $link ~'">bla-bla</a>')а здесь мы заранее формируем строку из внешней переменной и передаем ее в чанк уже готовую. Вопросы / fenom передать переменную внутрь снипета 9 0 2
Сергей Шлоков · 13 августа 2016, 21:54 $modx->event->output("Сообщение об ошибке"); Вопросы / вывод своих сообщений в админке 2 +1 1
Fi1osof · 07 января 2016, 11:57 Если ключ не хотите светить, то однозначно запрос надо слать с вашего сервера на донора. В MODX есть готовый CURL-клиент. Вот код для примера: $client = $modx->getService('rest.modRestCurlClient'); $result = $client->request('https://ya.ru', '/', 'POST', $params = array('foo' => 'foo')); print $result;Можете с этим кодом к консоли поиграться. Вопросы / POST запросы на сторонний API из REVO, как? 7 +12 20
Максим Кузнецов · 30 июня 2015, 14:19 Да, конечно: &leftJoin=`{ "Image": { "class": "msResourceFile", "on": "modResource.id = Image.resource_id AND Image.parent = 0" }, "Thumb": { "class": "msResourceFile", "on": "Image.id = Thumb.parent AND Thumb.path LIKE '%120x90%'" } }` Вот тут более подробная информация и заодно ответ на ваш первый вопрос. Вопросы / Изображения miniShop2 через mSearch 33 +1 2
Peter Zenin · 03 декабря 2013, 20:37 Вот как я сделал (у меня 1700 бесплатная): /core/components/minishop2/custom/delivery/msdeliveryhandlerpetja.class.php: <?php /** * User: Petja * Date: 02.11.13 * Time: 3:53 */ class msDeliveryHandlerPetja extends msDeliveryHandler{ public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) { $add_price = 0; if($cost < 1700){ $add_price = $delivery->get('price'); } return $cost + $add_price; } }А в настройках магазина: варианты доставки, редактировать доставку, Класс-обработчик: msDeliveryHandlerPetja И все вроде. Вопросы / При заказе от 2000 рублей - доставка бесплатно 5 0 1
[aiAssist] Я же просто попросил его создать магазин, а он СДЕЛАЛ ЭТО! Скоро выкачу новую версию, потестирую у себя на маке сначала.
[Theme.Bootstrap] Новая версия с Bootstrap 4 Новая обновленная версия уже в магазине modstore.pro/packages/sites-themes/theme.bootstrap 4.1.0 (15.07.2026) — Added chunks for quick site setup: Scripts, Meta, Menu.*, Crumb...
Редизайн сообщества Спасибо, руки не дошли пока. Много всего другого делаю. Завтра поправлю все замечания.
Reactions — современная система реакций для MODX 3 [1.0.1-pl] — 2026-07-15 Added ReactionsCount: live-обновление рядом с виджетом (span.reactions-count + reactions:updated) без F5
Как ограничить вебмастеру доступ к заказам? Допустим вы закроете доступ к заказам и пользователям через админку, но для полноценной работы с сайтом нужен доступ в БД, а там вся эта информация есть и спрятать её невозможно, т...
Возможно ли реализовать возможность предоплаты за доставку на сайте? Отлично, значит можно не создавать заказ пока оплата не пройдёт успешно, а поскольку класс-обработчик оплаты будет кастомный сможет сами решать какую стоимость пробрасывать. Ещё на...
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Выпустил новую версию [1.0.3-beta1] — 2026-07-13 Fixed — Inject сохраняет ``, `` и `` на полном HTML-документе (больше не оборачивает страни...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
Держи рабочий пример из платного msDiscount
Обрати внимание, что в событии доступны 3 параметра: $product, $data и собственно $price
Вариант 1. Через сниппет как у вас.
Ну и вызывать так
Вариант 2. Через плагин.
Если у этого компонента есть событие добавления комментария по аналогии с Tickets, то форма показывается, но при добавлении комментария плагин проверяет возможность добавления.
Вот как минимум 2 варианта.
П.С. Ещё было бы логично проверять почту. У пользователя ip может быть динамическим. А лучше разрешать оставлять отзыв только авторизованным пользователям. Тогда ещё проще.
таким образом:
здесь будет распарсен чанк с подстановкой плейсхолдеров этого чанка. А в нем этого самого link не предполагается.
а здесь мы заранее формируем строку из внешней переменной и передаем ее в чанк уже готовую.
Fi1osof·Можете с этим кодом к консоли поиграться.
Вот тут более подробная информация и заодно ответ на ваш первый вопрос.
/core/components/minishop2/custom/delivery/msdeliveryhandlerpetja.class.php:
А в настройках магазина: варианты доставки, редактировать доставку, Класс-обработчик: msDeliveryHandlerPetja
И все вроде.