Воеводский Михаил · 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
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
msImportExport не сохраняет родителя по умолчанию Компонент не понимает кирилические домены при загрузку фото. пример: Error download. Url : https://антаресдвери.рф/upload/iblock/a50/a50b2ef45305a3c18f6e298f1e134880.jpg. Message...
Где можно править тексты и заголовки писем? «Управление словарями» находится в панели администратора по пути: меню Система (иконка в виде шестеренки) -> Управление словарями.
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...
Механизмы ресурсов при 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.