Андрей · 04 декабря 2017, 19:33 Можно поставить дополнение Console и выполнить там код. Есть несколько вариантов: 1. Получить все ресурсы по артикулу и отметить как удаленные или сразу удалить $articles = array('артикул1', 'артикул2'); $c = $modx->newQuery('msProduct'); $c->leftJoin('msProductData', 'Data'); $c->where(array( 'Data.article:IN' => $articles )); $products = $modx->getCollection('msProduct', $c); foreach ($products as $product) { // 1. Отметить как удаленные $product->set('deleted', '1'); $product->save(); // 2. Удалить сразу // $product->remove(); } 2. Так же получить по артикулу и удалить через процессор (то же самое что удалить из админки) $articles = array('артикул1', 'артикул2'); $products = array(); $c = $modx->newQuery('msProduct'); $c->leftJoin('msProductData', 'Data'); $c->where(array( 'Data.article:IN' => $articles )); $c->select(array( 'msProduct.id as id' )); if ($c->prepare() && $c->stmt->execute()) { $products = $c->stmt->fetchAll(PDO::FETCH_ASSOC); } if (!empty($products)) { foreach($products as $product) { $response = $modx->runProcessor('resource/delete', array( 'id' => $product['id'] )); if ($response->isError()) { $modx->log(1, 'Не удалось удалить ресурс'); } } } Вопросы / удаление списка товаров miniShop2 по артиклу 4 +1 1
Дмитрий Середюк · 25 ноября 2017, 17:26 По сути если вы выводите опции через снипет msOptions, то там уже встроена проверка на пустоту, но данный снипет предназначен для полей с Автодополнением. Для обычных полей используйте простую проверку {if $field} Поле field = {$field} {else} Поле пусто. {/if} Вопросы / Как скрыть пустые msProductOptions в товаре? 2 +1 1
Гриборий · 13 мая 2017, 18:40 А теперь, когда логика понятна, можно писать и {$result ?: 'Ничего не найдено'} Вопросы / default в pdoPage при Fenom, как? 6 +5 2
Евгений Webinmd · 12 мая 2017, 19:02 я делал примерно так: для select добавлял name=«options[option_name]» и в корзине или письме в чанке через fenom выводиться так: {if $product.options.option_name?} <p><span>Опция:</span> {$product.options.option_name}</p> {/if} Вопросы / Добавление дополнительных полей в корзину 8 +1 1
Володя · 30 марта 2017, 19:00 пример вывода всех тегов <!-- tags --> {set $tags = $_modx->runSnippet('pdoResources',[ 'class' => 'msProductOption', 'sortby' => 'value', 'sortdir' => 'ASC', 'where' => json_encode([ 'key' => 'tags', 'value:!='=> 'undefined' ]), 'select' => 'DISTINCT(msProductOption.value) as id, "tag" as class_key', 'limit' => 0, 'return' => 'json' ])} {set $tags = $tags | fromJSON} {if count($tags)} <ul class="uk-float-right uk-navbar-nav tm-header-tags"> <li data-uk-dropdown="" aria-haspopup="true" aria-expanded="false"> <a>{'msfbshop_tags' | lexicon}</a> <div aria-hidden="true" class="uk-dropdown uk-dropdown-navbar uk-dropdown-bottom"> <ul class="uk-nav uk-nav-navbar"> {foreach $tags as $row} <a href="{$row.link}">{$row.id}</a> {/foreach} </ul> </div> </li> </ul> {/if} Вопросы / Выбрать все уникальные значения опций по ключу 9 +3 6
Wassi Wassinen · 07 января 2017, 22:46 Это уже работает. Создавайте поле в чанке ms2form и в него добавляйте дату вида yyyy-mm-dd. Самое простое — прикрутить скрипт datepicker. И сохраняйте значение в поле publishedon и т.д. Новые дополнения и их версии / [ms2form] Новые возможности для редактирования 58 +1 1
Сергей Шлоков · 30 августа 2016, 07:48 Создать плагин на событие OnHandleRequest <?php switch ($modx->event->name) { case 'OnHandleRequest': if ($modx->user->id == 10 && $modx->user->isAuthenticated($modx->context->key) && $modx->context->key != 'mgr') { $modx->runProcessor('security/logout'); break; } Вопросы / Как разлогинить пользователя в MODX? 3 +1 2
Владимир · 10 июня 2016, 08:58 дальше твишекTagger -протестирован на миллионе тегов. Готовые решения / И опять теги: теперь индексируемые 9 +1 1
Илья Уткин · 08 июня 2016, 16:54 Видимо, в runSnippet не заложено использование наборов. Попробуйте вот так — самостоятельно распарсить набор и превратить его в параметры $propertySetObj = $modx->getObject('modPropertySet', array('name' => 'cart_catalog')); $propertySet = $modx->parser->parseProperties($propertySetObj->get('properties')); $modx->runSnippet('Shopkeeper3', $propertySet); Вопросы / Вызвать набор параметров через runSnippet 3 +1 1
Богдан · 03 июня 2016, 16:20 Пользуюсь этим расширением для скрытия ресурсов, вполне устраивает. Вопросы / Какой компонент нужен сообществу? v.2 66 +1 1
mxBoard: канбан-доска для команд, людей и ИИ-агентов в MODX 3 Идея модуля отличная! Будем посмотреть. По интерфейсу косяк нашел, на странице пользователя, сверху плашка какие-то токены (пока не разобрался), а снизу страница за край уехала, и...
Плагин EnvBadge: визуальный индикатор окружения в админке MODX3 Лучше автоматический ci/cd настроить и не править прод напрямую. Это самый безопасный вариант. Другое дело, что далеко не каждый владелец сайта и далеко не каждый сайт готовы в авт...
[videoGallery] Видео галерея YouTube, Vimeo Невозможно установить пакет с подписью: videogallery-1.4.0-beta Ошибка установки Error в /core/packages/videogallery-1.4.0-beta/modCategory/7fc931a7772edc9752c16e9c41eb5e52.reso...
Релиз miniShop2 ver. 4.4.1 & 4.4.2 Подскажите пожалуйста, может я что-то не знаю или упустил. Но есть ли решение по глюку с radio? Указываешь свое radio c одинаковым name и в результате при переключении получаешь вс...
MaxNotify Обновление компонента 1.3.0-pl (22.07.2026) — добавлено автоматическое получение полей через msOrder->toArray(); — массивы и объекты безопасно пропускаются; — стандартные...
MyFavorites MyFavorites — 3.0.0-beta Первая версия для MODX Revolution 3.x — компонент полностью переписан с нуля (PHP >= 8.4, namespaced-ядро MODX 3, PSR-4, сервис-ориентированная архит...
Есть несколько вариантов:
1. Получить все ресурсы по артикулу и отметить как удаленные или сразу удалить
2. Так же получить по артикулу и удалить через процессор (то же самое что удалить из админки)
Для обычных полей используйте простую проверку
для select добавлял name=«options[option_name]»
и в корзине или письме в чанке через fenom выводиться так: