Воеводский Михаил · 16 августа 2019, 11:09 Даже не пытайтесь такое количество делать штатными средствами MODX. Его можно использовать только как оболочку, но всю логику и хранение товаров в БД придется написать самостоятельно. Механизмы ресурсов при 800К уложат на лопатки любой сервер. В Tickets переработана схема работы с кешем ресурсов, но не уверен, что и он справится. Для внимательного изучения: modx.pro/help/10631 и modx.pro/sites/7711 Вопросы / 800к объектов 9 +6 1
Дмитрий Середюк · 16 марта 2019, 23:22 <form method="post" class="ms2_form form-inline" role="form"> <input type="hidden" name="key" value="{$product.key}"/> <div class="number-item"> <button class="minus">-</button> <input type="num" class="amout" data-amout="amout" data-min="1" data-max="9999" name="count" value="{$product.count}"> <button class="plus">+</button> </div> <button class="btn btn-default" type="submit" name="ms2_action" value="cart/change"></button> </form> function itemCount(field){ var fieldCount = function(el) { var // Мин. значение min = el.data('min') || false, // Макс. значение max = el.data('max') || false, // Кнопка уменьшения кол-ва dec = el.prev('.minus'), // Кнопка увеличения кол-ва inc = el.next('.plus'); function init(el) { if(!el.attr('disabled')){ dec.on('click', decrement); inc.on('click', increment); } // Уменьшим значение function decrement() { var value = parseInt(el[0].value); value--; if(!min || value >= min) { el[0].value = value; } } // Увеличим значение function increment() { var value = parseInt(el[0].value); value++; if(!max || value <= max) { el[0].value = value++; } } } el.each(function() { init($(this)); }); }; $(field).each(function(){ fieldCount($(this)); }); } itemCount('[data-amout="amout"]'); Вопросы / Кастомные кнопки для input 7 +1 4
Баха Волков · 07 августа 2018, 22:47 HTML: <input type="radio" name="delivery" id="del1" data-description="Описание 1"> <label for="del1"> Пункт 1 </label> <input type="radio" name="delivery" id="del2" data-description="Описание 2"> <label for="del2"> Пункт 2 </label> <input type="radio" name="delivery" id="del3" data-description="Описание 3"> <label for="del3"> Пункт 3 </label> <div id="description"></div> JS (jQuery): $('input[type="radio"]').on('change', function() { var desc = $(this).data('description'); $('#description').text(desc); }); Вопросы / miniShop2 как вывести описание у определенного способа доставки? 11 0 1
Руслан Сафин · 07 августа 2018, 21:05 Вот на js, думаю проще всего будет $(function() { $('input:radio[name="delivery"]').change(function() { if ($(this).val() == '1') { $('.div_s_blokom_opisaniya').css('display','block'); } else { $('.div_s_blokom_opisaniya').css('display','none'); } }); });Можно использовать .fadeIn() и .fadeOut() при желании Вопросы / miniShop2 как вывести описание у определенного способа доставки? 11 0 1
Константин Ильин · 30 сентября 2017, 11:18 Зачем сниппет писать, если можно пару строчек взять из getImageList ну или просто применить свои навыки программирования, благо феном позволяет все на месте писать. умник ворвется крича что «цикл foreach тебя спасет»А как еще можно пройтись по массиву? Если зайти в сниппет getImageList можно найти такие строчки ..... $fields['_alt'] = $idx % 2; $idx++; $fields['_first'] = $idx == 1 ? true : ''; $fields['_last'] = $idx == $limit ? true : ''; $fields['idx'] = $idx; .....Надо просто применить их на феноме: {set $rows = json_decode($_modx->resource.migx_tv, true)} {set $idx = 0} {foreach $rows as $idxArr => $row} {set $row['idx'] = $idx++} {* idx от созданной переменной с инкриментом*} {set $row['idxForeach'] = $row@index} {* idx от foreach*} {*set $idxMIGX = $row['MIGX_id']*} {* idx от MIGX*} {if $row@first} {set $row['_first'] = 'first item'} {/if} {if $row@last} {set $row['_last'] = 'last item'} {/if} {if !($idx % 2)} {set $row['_alt'] = 'odd item'} {/if} {$row | print_r} {/foreach} Вопросы / Fenom вместо getImageList MIGx 48 +1 2
Игорь Терентьев · 08 июня 2017, 17:42 У меня получилось решить данную проблему. Во первых нужно удалить ранее зарегистрированные сервисы: if ($miniShop2 = $modx->getService('miniShop2')) { $miniShop2->removeService('delivery', 'MskDelivery'); }Создаем файл в core/components/minishop2/custom/delivery/msdeliverycourierhandler.class.php <?php if (!class_exists('msDeliveryHandler')) { require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php'; } class msDeliveryCourierHandler extends msDeliveryHandler implements msDeliveryInterface { public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0.0) { $freedeliverysumm = 90; $cart = $order->ms2->cart->status(); $cart_cost = $cart['total_cost']; if($cart_cost > $freedeliverysumm){ return $cost; }else{ $delivery_cost = parent::getCost($order, $delivery, $cost); return $delivery_cost; } } }Регистрируем: if ($miniShop2 = $modx->getService('miniShop2')) { $miniShop2->addService('delivery', 'msDeliveryCourierHandler', '{core_path}components/minishop2/custom/delivery/msdeliverycourierhandler.class.php' ); } Вопросы / Бесплатная доставка курьером от определенной суммы 27 +1 2
Алексей Ерохин · 27 марта 2017, 13:07 $options = array(); $translit = $modx->getOption('friendly_alias_translit', $options, 'russian'); $translitClass = $modx->getOption('friendly_alias_translit_class', $options, 'translit.modTransliterate'); $translitClassPath = $modx->getOption('friendly_alias_translit_class_path', $options, $modx->getOption('core_path', $options, MODX_CORE_PATH) . 'components/'); $modx->getService('translit', $translitClass, $translitClassPath, $options); $transliteratedtext = $modx->translit->translate($text, $translit); Вопросы / Как использовать translit из сниппета? 5 0 6
Владимир Тельнов · 18 марта 2017, 01:58 Разобрался. У меня стояла задача добавить поля «Дом» и «Номер квартиры» в профиль пользователя и отображать содержимое этих полей при создании нового заказа в miniShop2. Поля building и room — это единственные поля, которые не совпадают с полями в стандартном профиле пользователя, в результате чего при создании нового заказа приходится указывать номер дома и квартиры каждый раз в ручную. Выполнил инструкцию из первого поста. После чего внес изменения в параметры сниппета officeProfile и в чанки tpl.msOrder (miniShop2), tpl.Office.profile.form (Office) Для отображения нового поля в профиле в параметрах сниппета officeProfile, в раздел profileFields необходимо добавить поле new_field и соответствующее поле input <input type="text" name="new_field" placeholder="" value="[[+modx.user.id:userinfo=`new_field`]]"/>Для отображения нового поля при создании нового заказа в чанке tpl.msOrder отредактировал соответсвущий input {foreach ['building'] as $field} <input type="text" id="{$field}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}" name="{$field}" value="[[+modx.user.id:userinfo=`new_field`]]" class="form-control{($field in list $errors) ? ' error' : ''}"> {/foreach} Пошаговые инструкции / Дополнительные поля профиля юзера (не extended) 138 0 2
Андрей П · 07 января 2017, 13:46 У меня работает так {'название'|option} Вопросы / ClientConfig + Fenom в разных контекстах 28 +2 1
Евгений · 23 ноября 2015, 11:13 Да я и не имел ввиду стандартные средства. Пока вот решил таким топорным методом. Сделал снипет, и вывожу его в ресурсе. <?php $result = $modx->getCollection('FormItForm'); $key=''; foreach($result as $key=>$row){ $items[] = (json_decode($row->get('values'))); }; print "<table>"; print "<tr><td>ФИО</td><td>Телефон</td><td>Почта</td></tr>"; foreach($items as $item){ print "<tr>"; print "<td>".$item->ФИО."</td>"; print "<td>".$item->Телефон."</td>"; print "<td>".$item->mail."</td>"; print "</tr>"; } print "</table>";Не разобрался только как вывести переменные в плэйсхолдеры tpl, чтобы было по фэншую MODXa. Вопросы / Formit - вывести таблицу сохраненных форм 9 0 1
Возможно ли реализовать возможность предоплаты за доставку на сайте? Так ради этого мне и нужно это все, чтобы клиент платил сразу при оформлении заказа, чтобы избавить себя от мусорных заявок (когда человек оставляет заявку, а предоплату делать не ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем 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`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
Механизмы ресурсов при 800К уложат на лопатки любой сервер. В Tickets переработана схема работы с кешем ресурсов, но не уверен, что и он справится.
Для внимательного изучения: modx.pro/help/10631 и modx.pro/sites/7711
JS (jQuery):
Можно использовать .fadeIn() и .fadeOut() при желании
А как еще можно пройтись по массиву?
Если зайти в сниппет getImageList можно найти такие строчки
Надо просто применить их на феноме:
Во первых нужно удалить ранее зарегистрированные сервисы:
Создаем файл в core/components/minishop2/custom/delivery/msdeliverycourierhandler.class.php
Регистрируем:
У меня стояла задача добавить поля «Дом» и «Номер квартиры» в профиль пользователя и отображать содержимое этих полей при создании нового заказа в miniShop2. Поля building и room — это единственные поля, которые не совпадают с полями в стандартном профиле пользователя, в результате чего при создании нового заказа приходится указывать номер дома и квартиры каждый раз в ручную.
Выполнил инструкцию из первого поста. После чего внес изменения в параметры сниппета officeProfile и в чанки tpl.msOrder (miniShop2), tpl.Office.profile.form (Office)
Для отображения нового поля в профиле в параметрах сниппета officeProfile, в раздел profileFields необходимо добавить поле new_field и соответствующее поле input
Для отображения нового поля при создании нового заказа в чанке tpl.msOrder отредактировал соответсвущий input
Не разобрался только как вывести переменные в плэйсхолдеры tpl, чтобы было по фэншую MODXa.