27 февраля 2021, 17:18 Уважаемые разработчики, хотел бы попросить. Можно ли в следующем релизе изменить формат телефона в msorderhandler.class.php? Каждый раз приходится строчку менять на substr(preg_replace('/[^-+()0-9]/iu', '', $value), 0, 16); Нужен многим формат +7(999)999-99-99, то есть и "+" нужен и скобки, а в общей сумме получается 16 символов. Буду очень признателен. Новые дополнения и их версии / Релиз miniShop2 ver. 2.8.0 26 0 2
31 января 2021, 13:27 Вдруг кому понадобится: я решил этот момент следующим образом: 1) создал кастомный сlass customFilter extends mse2FiltersHandler, возможность создания которого предусмотрена компонентом 2) переназначил функцию constractpublic function __construct(mSearch2 &$mse2, array $config = array()) { parent::__construct($mse2, $config); $this->catalogBanners(); }3) В своей функции catalogBanners() выполнил что мне нужно: public function catalogBanners(){ $banners = json_decode($this->modx->resource->getTVValue('migx_catbans'),true); $fabrics = $_REQUEST['fabric'] ? explode(',',$_REQUEST['fabric']) : []; $metals = $_REQUEST['metal'] ? explode(',',$_REQUEST['metal']) : []; $key = md5(implode('|', array_merge($fabrics, $metals))); if (isset($_SESSION['catbans']) and $_SESSION['catbans']['key'] === $key){ return true; } shuffle($banners); $is_main = (empty($fabrics) and empty($metals)) ? true : false; $catbans = []; foreach ($banners as $idx=>$banner){ $is_good = true; $migx_fabric = is_array($banner['fabric']) ? $banner['fabric'] : explode(',',$banner['fabric']); if (empty(array_intersect($fabrics, $migx_fabric)) and !empty($banner['fabric']) and !$is_main){ $is_good = false; } $migx_metal = is_array($banner['metal']) ? $banner['metal'] : explode(',',$banner['metal']); if (empty(array_intersect($metals, $migx_metal)) and !empty($banner['metal']) and !$is_main){ $is_good = false; } if ($is_good){ //Расчет позиции нахождения баннера (3,17,35,49,67) $position = 3 + count($catbans) * 14 + intdiv(count($catbans), 2) * 4; $catbans[$position] = $banner; } } $_SESSION['catbans'] = $catbans; $_SESSION['catbans']['key'] = $key; return true; }4) в tpl mFilter2 уже обращаясь к сессии взял что мне нужно: {var $catbans = $.session.catbans} {if $catbans[$idx]} <a href="{$catbans[$idx]['href']}" class="banner"> <img src="/images/{$catbans[$idx]['img']}" alt="" /> </a> {/if}Итого: — вызывается 1 раз, как и нужно и с появлением контента — нет причин бояться обновления компонента Вопросы / Как правильно внедриться в mFilter2? 4 +1
31 января 2021, 13:20 Решение хорошее, но не совсем подходит, потому что оно работает после того как отобразился контент товаров. Вопросы / Как правильно внедриться в mFilter2? 4 0
21 января 2021, 15:54 Ну да вижу. И в package такого нет. Буду разбираться спасибо. Новые дополнения и их версии / Релиз miniShop2 ver. 2.7.0 112 0
21 января 2021, 15:48 yadi.sk/i/dvFRXmWZSp4kCA /assets/components/minishop2/js/web Вчера устанавливал новую. Новые дополнения и их версии / Релиз miniShop2 ver. 2.7.0 112 0
21 января 2021, 15:30 Да точно. Устанавливал через modstore. Новые дополнения и их версии / Релиз miniShop2 ver. 2.7.0 112 0
21 января 2021, 14:58 Подскажите, кто скачивал у всех default.js странный с кучей console.log() закоментированных и нет, которые влияют на некорректную работу например при изменении кол-ва товаров в корзине? Новые дополнения и их версии / Релиз miniShop2 ver. 2.7.0 112 0
08 января 2021, 14:58 Виталий, было бы здорово добавить удаление файлов каталога и предложений из админки с 3ей вкладки. Для менеджера, когда необходимо загрузить к примеру только offer.xml, то с первого раза получится. Но во второй раз когда нужно загрузить напишется, что этот файл уже есть. Само собой менеджера никто не допустит к файловой системе чтобы не удалил нужное. Новые дополнения и их версии / Релиз mSync версии 1.2.0 11 0
05 января 2021, 17:12 Супер! Будем тестить. Новые дополнения и их версии / Релиз mSync версии 1.2.0 11 0
02 декабря 2020, 10:54 Лишнее удалите чего у Вас нет. У меня добавлены собственные поля в minishop2 через систему плагинов. Вопросы / msExportOrdersExcel 9 +1
02 декабря 2020, 10:53 [ { "namespace": "", "namespace_path": "", "classKey": "msOrder", "name": "Экспорт заказов", "tab": "Экспорт заказов", "limit": 50000, "start": 0, "sort": "id", "dir": "ASC", "last_start_run": null, "last_end_run": null, "date_process": true, "date_format": "d.m.Y H:i:s", "classExport": "xlsx", "classExportList": "xls,xlsx,csv", "area": "minishop2-form-orders", "delimiter": ";", "source": 10, "path": "", "dependent_profile": "ordersproducts", "processor": "core\/components\/msexportordersexcel\/processors\/mgr\/export\/custom\/orders", "filename": "Экспорт заказов %d.%m.%Y", "download": true, "remove": true, "line_grouping": true, "line_grouping_show": false, "head_process": true, "head_color": "ffeb9c", "head_all": false, "head_freezepane": true, "hide_colump": "id,weight", "height": "20", "width": "20", "where": "", "select": "", "leftjoin": "", "innerjoin": "{\n \"User\": {\n \"class\": \"modUser\",\n \"on\": \"msOrder.user_id = User.id\"\n },\n \"UserProfile\": {\n \"class\": \"modUserProfile\",\n \"on\": \"msOrder.user_id = UserProfile.internalKey\"\n },\n \"Payment\": {\n \"class\": \"msPayment\",\n \"on\": \"msOrder.payment = Payment.id\"\n },\n \"Delivery\": {\n \"class\": \"msDelivery\",\n \"on\": \"msOrder.delivery = Delivery.id\"\n },\n \"Status\": {\n \"class\": \"msOrderStatus\",\n \"on\": \"msOrder.status = Status.id\"\n },\n \"Address\": {\n \"class\": \"msOrderAddress\",\n \"on\": \"msOrder.address = Address.id\"\n }\n}", "style": "", "relatedObjects": "", "json_process": true, "groupby": "", "having": "", "active": true, "fields": [ { "field": "id", "value": "ID", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 1, "active": true }, { "field": "num", "value": "Номер заказа", "width": 50, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "center", "rank": 2, "active": true }, { "field": "createdon", "value": "Создан", "width": 30, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "center", "rank": 3, "active": true }, { "field": "cost", "value": "На сумму", "width": 30, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "center", "rank": 4, "active": true }, { "field": "cart_cost", "value": "Общая сумма заказа", "width": 30, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "center", "rank": 6, "active": true }, { "field": "Address.properties", "value": "Промокод", "width": 30, "handler": "PropertiesPromocode", "alignment_horizontal": "left", "alignment_vertical": "center", "rank": 6, "active": true }, { "field": "weight", "value": "Вес", "width": 40, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "center", "rank": 7, "active": true }, { "field": "Status.name", "value": "Статус", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "center", "rank": 26, "active": true }, { "field": "Payment.name", "value": "Способ оплаты", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "center", "rank": 27, "active": true }, { "field": "Delivery.name", "value": "Способ доставки", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "center", "rank": 28, "active": true }, { "field": "Address.lastname", "value": "Фамилия", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 29, "active": true }, { "field": "Address.receiver", "value": "Имя", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 30, "active": true }, { "field": "Address.fathersname", "value": "Отчество", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 31, "active": true }, { "field": "UserProfile.email", "value": "E-mail пользователя", "width": 40, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "center", "rank": 32, "active": true }, { "field": "Address.phone", "value": "Телефон", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 33, "active": true }, { "field": "Address.country", "value": "Страна", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 34, "active": true }, { "field": "Address.index", "value": "Индекс", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 35, "active": true }, { "field": "Address.region", "value": "Регион", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 36, "active": true }, { "field": "Address.city", "value": "Город", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 37, "active": true }, { "field": "Address.metro", "value": "Метро", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 38, "active": true }, { "field": "Address.street", "value": "Улица", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 39, "active": true }, { "field": "Address.building", "value": "Здание", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 40, "active": true }, { "field": "Address.corpus", "value": "Корпус", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 41, "active": true }, { "field": "Address.room", "value": "Квартира", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 42, "active": true }, { "field": "Address.comment", "value": "Комментарий", "width": 20, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 43, "active": true }, { "field": "comment", "value": "Комментарий менеджера", "width": 40, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "center", "rank": 44, "active": true } ] } ] Вопросы / msExportOrdersExcel 9 +1
02 декабря 2020, 10:52 [ { "namespace": "", "namespace_path": "", "classKey": "msOrderProduct", "name": "msOrderProduct", "tab": "export", "limit": 50000, "start": 0, "sort": "id", "dir": "ASC", "last_start_run": null, "last_end_run": null, "date_process": true, "date_format": "d.m.Y H:i:s", "classExport": "xlsx", "classExportList": "xls,xlsx,csv", "area": "", "delimiter": ";", "source": 10, "path": "", "dependent_profile": "", "processor": "core\/components\/msexportordersexcel\/processors\/mgr\/export\/default", "filename": "export %d.%m.%Y", "download": true, "remove": true, "line_grouping": true, "line_grouping_show": false, "head_process": true, "head_color": "EEEEEE", "head_all": false, "head_freezepane": false, "hide_colump": "", "height": "20", "width": "20", "where": "", "select": "", "leftjoin": "", "innerjoin": "{\n \"Product\": {\n \"class\": \"msProductData\",\n \"on\": \"msOrderProduct.product_id = Product.id\"\n }\n}", "style": "", "relatedObjects": "", "json_process": false, "groupby": "", "having": "", "active": true, "fields": [ { "field": "name", "value": "Наименование товара", "width": 50, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 4, "active": true }, { "field": "Product.article", "value": "Артикул", "width": 50, "handler": "", "alignment_horizontal": "", "alignment_vertical": "", "rank": 5, "active": true }, { "field": "count", "value": "Кол-во", "width": 20, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "", "rank": 6, "active": true }, { "field": "price", "value": "Цена", "width": 30, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "", "rank": 7, "active": true }, { "field": "weight", "value": "Вес", "width": 30, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "", "rank": 8, "active": true }, { "field": "cost", "value": "Общая сумма заказа", "width": 40, "handler": "", "alignment_horizontal": "left", "alignment_vertical": "", "rank": 9, "active": true }, { "field": "options", "value": "Опции", "width": 40, "handler": "msoptions", "alignment_horizontal": "", "alignment_vertical": "", "rank": 10, "active": true } ] } ] Вопросы / msExportOrdersExcel 9 +1
01 ноября 2020, 15:32 Подскажите. А есть ли возможность программно изменить состав заказа но не через processor? При таком решении не работает событие msOnUpdateOrder — оно просто не отлавливается поскольку обновление делается в обход. Вопросы / [Решено] Как программно изменить заказ minishop2? 4 0
26 октября 2020, 19:12 Название меняется поскольку в кеше создается уникальным. Я ПРИМЕРНО понимаю, что кэшируется сниппет/чанк/плагин, создается файл — но при этом он не создается и пишется в БД с сылкой на этот исполнительный файл, позже при заходе на страницу к примеру по запросу БД берется информация об исполнительном файле, его нет, и происходит процедура удаления старых данных но их нет и поэтому ошибка и «создаются» новые и все по кругу. Ребят может кто в курсе этой проблемы? Готовые решения / Полезные методы xPDOCacheManager 30 0
26 октября 2020, 16:00 Тот же вопрос интересует. Валятся эти ошибки. Готовые решения / Полезные методы xPDOCacheManager 30 0
09 октября 2020, 14:19 Нашел решение. Необходимо заменить строку $templatePath = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR; на эту $templatePath = dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR; в файле /core/components/controlerrorlog/processors/mgr/get.class.php Вопросы / Не работает лог modx 3 0
09 октября 2020, 14:13 [2020-10-09 14:07:19] (ERROR @ /core/components/controlerrorlog/processors/mgr/get.class.php : 133) PHP warning: dirname() expects exactly 1 parameter, 2 given Вопросы / Не работает лог modx 3 0
09 октября 2020, 13:59 Та же самая проблема. Еще когда на него нажимаешь он сам провоцирует ошибку и пишет ее в лог, но само окно пустое. Вопросы / Не работает лог modx 3 0
11 августа 2020, 15:23 Спасибо, Сергей. Вопросы / Валится постоянно ошибка Could not cache context settings for web. 2 0
22 июля 2020, 16:17 Супер спасибо. Классная статья. Пошаговые инструкции / Изменяем форму заказа minishop2 19 0
[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-документе (больше не оборачивает страни...
1) создал кастомный сlass customFilter extends mse2FiltersHandler, возможность создания которого предусмотрена компонентом
2) переназначил функцию constract3) В своей функции catalogBanners() выполнил что мне нужно: 4) в tpl mFilter2 уже обращаясь к сессии взял что мне нужно: Итого:
— вызывается 1 раз, как и нужно и с появлением контента
— нет причин бояться обновления компонента
/assets/components/minishop2/js/web
Вчера устанавливал новую.
в файле /core/components/controlerrorlog/processors/mgr/get.class.php