Ryan Murphy · 02 мая 2016, 14:06 1 +1 Так как ответа на вопрос не было, я отправлю своё решение, возможно, кому-то понадобится. Работает хорошо. Как и написал Василий, можно просто сделать выборку через class: <div class="container" id="pdopage"> <div class="rows"> {$_modx->runSnippet('!pdoPage',[ 'select' => ['galItem' => '*'] | toJSON, 'ajaxMode' => 'default', 'tpl' => 'gallery.row', 'class' => 'galItem', 'sortby' => 'id' ])} </div> {$_modx->getPlaceholder('page.nav')} </div> Вопросы / pdoPage + gallery 7
Дмитрий Танцирев · 08 апреля 2016, 21:56 11 0 Может кому пригодится: {"field":"published", "caption":"Чекбокс", "inputTVtype":"checkbox", "inputOptionValues":"Да==1"} {"header": "Чекбокс", "dataIndex":"published", "show_in_grid":1, "renderer":"this.renderCrossTick"} Вопросы / MIGX и checkbox 3
Илья Уткин · 21 марта 2016, 16:46 3 +2 ilyaut.ru/cheats/to-rebuild-all-previews-of-products/ Запускать в Console Вопросы / Обновление всех превью товара MS2 42
Константин · 04 марта 2016, 15:30 7 +1 Недавно делал на сайте вот так: Вызов сниппета через AjaxForm [[!AjaxForm? &snippet=`QuickOrder` &form=`order.form` ]] И вот сам сниппет QuickOrder <?php $errors = array(); if ( empty( trim( $_POST['total'] ) ) OR !is_numeric( trim( $_POST['total'] ) ) ) { $errors['total'] = 'Вы не заполнили кол-во человек'; } if ( empty( trim( $_POST['phone'] ) ) ) { $errors['phone'] = 'Вы не заполнили телефон'; } if ( !empty( $errors ) ) { return $AjaxForm->error( 'В форме содержатся ошибки!', $errors ); } else { $miniShop2 = $modx->getService( 'minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties ); if ( !( $miniShop2 instanceof miniShop2 ) ) { return $AjaxForm->error( 'Ошибка скрипта!' ); } $miniShop2->initialize($modx->context->key, $scriptProperties); $miniShop2->order->add( 'receiver', trim( $_POST['receiver'] ) ); $miniShop2->order->add( 'email', trim( $_POST['email'] ) ); $miniShop2->order->add( 'delivery', 1 ); // id метода доставки $miniShop2->order->add( 'payment', 1 ); // id метода оплаты $miniShop2->cart->add($_POST['id'], $modx->getOption('count', $_POST, 1), $modx->getOption('options', $_POST, array())); return $AjaxForm->success( 'Форма успешно отправлена. Сейчас вы перейдете на страницу оплаты.' ); } JS Callback для отправки формы: $( document ).on('af_complete', function( event, response ) { if( response.success ) { response.form[0].submit(); } }) Вопросы / Покупка товара в один клик 3
Евгений Шеронов · 17 февраля 2016, 19:02 2 +3 Всё есть в документации к AjaxForm: Немножко подправив, можно сделать что-угодно. $(document).on('af_complete', function(event, response) { if (response.success) { var form = response.form; if (form.attr('id') == 'callback') {yaCounter25745255.reachGoal('callback');} if (form.attr('id') == 'buy') {yaCounter25745255.reachGoal('buy');} if (form.attr('id') == 'commerce') {yaCounter25745255.reachGoal('commerce');} } }); Не проверял, но должно работать) Вопросы / Цели Я.Метрики по удачному событию 4
Павел Романов · 10 февраля 2016, 15:34 1 0 Плагин по-любому нужен, иначе как Вы сообщите MODX из какого контекста выдавать сайт? Хотя бы такой (вешается на событие OnHandleRequest): <?php if ($modx->context->get('key') == 'mgr') { return; } switch ($modx->getOption('http_host')) { case 'домен1.ru': $modx->switchContext('ключ_контекста_1'); break; case 'домен2.ru': $modx->switchContext('ключ_контекста_2'); break; } Вопросы / Два сайта на одном движке. 5
Павел Гвоздь · 27 января 2016, 10:30 5 0 1) Создаёшь файл core/components/minishop2/custom/order/myorderhandler.class.php с содержимым: <?php class myOrderHandler extends msOrderHandler { public function submit($data = array()) { $min_price_order = $this->modx->getOption('ms2_minimum_price_order'); $cart_status = $this->ms2->cart->status(); $currency = $this->modx->lexicon('ms2_frontend_currency'); if( $cart_status['total_cost'] < $min_price_order ) { return $this->error( 'ms2_order_err_total_price', array(), array('price'=>$min_price_order, 'currency'=>$currency) ); } return parent::submit($data); } } 2) Создаёшь настройку (желательно в namespace «minishop2») ms2_minimum_price_order со значением суммы заказа, например: 50000. 3) В настройке ms2_order_handler_class указываешь только что созданный класс обработчик, вот так: myOrderHandler. Вроде всё… Вопросы / Минимальный заказ 17
Василий Наумкин · 21 января 2016, 09:09 3 0 На старой версии у меня работает, а в новой, похоже, что-то поменялось. Бронебойный вариант: $("#cleanmincart").click(function(){ $.post(document.location, {ms2_action: 'cart/clean'}); }); Вопросы / Как сделать очистку корзины из шаблона tpl.MinCart 9
Наумов Алексей · 12 января 2016, 16:03 2 +3 Ну… пишем плагин на OnDocFormSave. В нем мы делаем проверку на: 1. Что мы сохраняем новый документ if ($mode == 'new') { ... }2. Что наш документ — это Дом, например по шаблону проверяем if($resource->get('template') == XXX)И создаем дочерние ресурсы, используя $resource->get('id') (да-да, id нового документа у нас уже есть) в качестве parent. $data = array( 'parent' => $resource->get('id'), 'published' => 1, 'pagetitle' => 'Название', 'content' => 'Текст страницы' ); $modx->runProcessor('resource/create', $data); Вопросы / Как автоматически создавать дочерние ресурсы? 7
Борис И · 03 января 2016, 18:16 2 +1 Пример вывода ссылки на странице [[!+modx.user.id:memberof=`Administrator`:then=`<a href="/dobavit-tickets.html?tid=[[*id]]">Ред-с-фронта</a>`]]1. проверяем что мы админ 2. если админ, вывести ссылку на /dobavit-tickets.html?tid=[[*id]], это страница добавления тикета с фронта сайта, [[*id]] — соответственно того тикета который хотим редактировать. Чанк для редактирования tpl.Tickets.form.update Как-то так, если нигде не ошибся. Вопросы / Tickets: редактирование тикетов 6
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в 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`; — добавлены ...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
FileMan - прикрепление файлов к ресурсам для MODX 3 Добрый день! Может что-то с правами доступа к файлам? Посмотрите логи в modx, в php. С ходу сложно ответить, ранее не было таких случаев.
Запускать в Console
Вызов сниппета через AjaxForm
И вот сам сниппет QuickOrder
JS Callback для отправки формы:
Немножко подправив, можно сделать что-угодно.
Не проверял, но должно работать)
Хотя бы такой (вешается на событие OnHandleRequest):
2) Создаёшь настройку (желательно в namespace «minishop2») ms2_minimum_price_order со значением суммы заказа, например: 50000.
3) В настройке ms2_order_handler_class указываешь только что созданный класс обработчик, вот так: myOrderHandler.
Вроде всё…
В нем мы делаем проверку на:
1. Что мы сохраняем новый документ
2. Что наш документ — это Дом, например по шаблону проверяем
И создаем дочерние ресурсы, используя $resource->get('id') (да-да, id нового документа у нас уже есть) в качестве parent.
1. проверяем что мы админ
2. если админ, вывести ссылку на /dobavit-tickets.html?tid=[[*id]], это страница добавления тикета с фронта сайта, [[*id]] — соответственно того тикета который хотим редактировать.
Чанк для редактирования tpl.Tickets.form.update
Как-то так, если нигде не ошибся.