Владимир · 04 сентября 2020, 08:41 У вас в коде нет «countButton», вот она и не может его найти. Попробуйте кнопкам прописать класс countButton, а в функции написать: .on('click touchend', '.countButton', function (e) {… Готовые решения / Плюс и минус в каунте корзины MS2 13 +1 1
Баха Волков · 24 июня 2020, 11:55 xtype: 'container', html: 'тут html' либо ты можешь расширить Ext.BoxComponent как вариант Вопросы / Как вставить html в секцию MODX.Window ExtJS 2 +1 1
Aleksandr Huz · 16 июня 2020, 09:21 Теперь понятно. Значит нам в массив нужно добавить поле с заголовками товаров. Примерно, так: public function prepareRow(xPDOObject $object) { $array = $object->toArray(); $q = $this->modx->newQuery('modResource'); if(!is_array($array['products'])) { $array['products'] = explode(',', $array['products']); } $q->where(array('id:IN' => $array['products'])); $q->select(array('pagetitle')); if($q->prepare() && $q->stmt->execute()) { $resources = $q->stmt->fetchAll(PDO::FETCH_ASSOC); $array['productsTitle'] = array_map(function($res){ return $res['pagetitle']; },$resources); $array['productsTitle'] = implode(',', $array['productsTitle']); } $array['actions'] = []; .... }Теперь в место products подставляем productsTitle Удаляем ненужный код: функцию — outputArray и вот эти строчки тоже ни к чему $item = $this->modx->getObject('modExtraItem', 'modExtraItem.id'); $products = $item->get('products'); Вопросы / [Решено] Подмена данных при формировании запросов xPDOQuery? 11 +1 2
vectorserver · 14 апреля 2020, 19:23 Так проще и быстрее, без обид друг) Код сниппета ParseInsta: <?php //ParseInsta $cacheKey = "insta_".md5($url); $returnCache = $modx->cacheManager->get("$cacheKey"); if(!$returnCache){ $doc = new DOMDocument(); $doc->loadHTMLFile($url); $xpath = new DOMXpath($doc); $sharedData = $xpath->query("//html/body/script[1]")->item(0)->textContent; $str = $sharedData; $modx->cacheManager->set($cacheKey, $str, 7200*60); return $str; } return $returnCache;И далее JSON обрабатываем через JS или конвертуть в массив и использовать в чанках <script> var instaphotos = [[ParseInsta? $url=`https://www.instagram.com/explore/tags/кофесос`]]; //bla bla bla </script> Готовые решения / Вывод фоток с Instagram по тегу или юзеру без токена 8 +11 6
Александр Туниеков · 19 марта 2020, 13:52 Я тупо в ресолвере через newObject добавляю. Если есть лучше вариант, то будет интересно узнать. resolve.default_fields.php /** @var xPDOTransport $transport */ /** @var array $options */ /** @var modX $modx */ if ($transport->xpdo) { $modx =& $transport->xpdo; /** @var array $options */ switch ($options[xPDOTransport::PACKAGE_ACTION]) { case xPDOTransport::ACTION_INSTALL: $fields = [ [ 'name'=>'res_id', 'label'=>'Мероприятие', 'dbtype'=>'int', 'precision'=>10, 'phptype'=>'integer', 'xtype'=>'tevent-univers-combo', 'sort'=>1, 'validate'=>'required', 'select_query'=> '{ "parents":"0", "template":"1" }', 'filter'=>true, 'active'=>true, ], ///еще поля ]; foreach($fields as $field){ if(!$in_field = $modx->getObject('tEventField',['name'=>$field['name']])){ if($in_field = $modx->newObject('tEventField')){ $in_field->fromArray($field); if(!$in_field->save()) $modx->log(xPDO::LOG_LEVEL_ERROR, "[tEvent] field {$field['name']} not add!"); } } } $modx->log(xPDO::LOG_LEVEL_INFO, '[tEvent] Successfully add Default fields!'); break; } } Вопросы / Импорт дефольтных данных в базу данных modExtra 3 +1 1
Prihod · 29 февраля 2020, 13:01 Выполни в консоли код $pkgName = 'msFieldsManager'; $pkgNameLower = mb_strtolower($pkgName); $modelPath = $modx->getOption("{$pkgNameLower}.core_path", null, $modx->getOption('core_path') ."components/{$pkgNameLower}/") . 'model/'; $modx->addPackage($pkgNameLower, $modelPath); $manager = $modx->getManager(); $manager->addField('MsfmProcessors', 'storage_id', array('before' => 'id')); $manager->addField('MsfmFields', 'fieldset_id', array('before' => 'id')); $manager->addField('MsfmFields', 'dbindex', array('before' => 'dbdefault')); $manager->addField('MsfmFields', 'default_value', array('before' => 'dbdefault')); $manager->addField('MsfmFields', 'grid', array('before' => 'required')); $manager->addField('MsfmFields', 'sortable', array('before' => 'required')); $manager->addField('MsfmFields', 'unit', array('before' => 'extjs')); $manager->addIndex('MsfmFields', 'name'); Новые дополнения и их версии / msFieldsManager свои свойства в товаре miniShop2 176 0 1
Артем · 27 января 2020, 15:15 Теоретически можно указать домен в настройке session_cookie_domain, но также изменить session_name чтобы с текущими авторизациями не было конфликтов. Вопросы / Localizator и Office 2 +1 2
mngatoff · 02 декабря 2019, 02:23 достаточно триггернуть событие change на input:count, и запрос отправится стандартными средствами минишопа. я вот так делаю (немного вырвано из контекста, но принцип ясен): <script> $(document) .on('click touchend', countButton, function (e) { // где countButton - кнопки плюс и минус e.preventDefault(); var $container = $(this).closest('.ms2_form'), $count = $container.find('[name="count"]'), num = $count.val(); if (isNaN(num) === false) { // страховочка от, например, пустого поля num = parseInt(num, 10); switch ($(this).data('ms2-count')) { // соответственно, у кнопок должен быть атрибут data-ms2-count="plus или minus" case 'plus': num = num + 1; $count.val(num); break; case 'minus': if (num <= 1) return; num = num - 1; $count.val(num); break; } } else { return false; } $count.trigger('change'); // инициализируем отправку на сервер. }) .on('change keypress keyup', '.ms2_form [name="count"]', function() { if ($(this).val().match(/\D/)) { this.value = $(this).val().replace(/\D/g,''); // следим на лету, чтобы в поле были только цифры } if (parseInt($(this).val(), 10) < 1) { this.value = 1; // следим на лету, чтобы в поле было не меньше единицы } }); </script> Готовые решения / Плюс и минус в каунте корзины MS2 13 +7 6
SEQUEL.ONE · 14 сентября 2019, 20:36 Сегодня удалось победить отправку почты из формы на reg.ru Во-первых я настроил smtp сервер от Яндекса по мануалу modhost.pro/help/email Во-вторых надо было настроить DNS. Тех. поддержка reg.ru в этом помогла: В SPF-записи отсутствует ip-адрес хостинга: site.com. 300 IN TXT «v=spf1 redirect=_spf.yandex.net» Это ошибка связана с политикой DMARC. Вам необходимо добавить ip-адрес сервера хостинга 192.168.255.255 в SPF-запись. Она примет следующий вид: v=spf1 ip4:192.168.255.255 redirect=_spf.yandex.net Ну а в третьих проверить параметр emailTo, является ли введённый адрес реальным. И да, очень помог компонент QuickEmail со сниппетом: [[!QuickEmail? &to=`my-mail@mydomain.ru` &debug=`1` ]] Вопросы / FormIt не принимает параметр emailTo 32 0 2
SEQUEL.ONE · 20 июля 2019, 20:42 Не забудьте сделать бекап базы через SSH: mysqldump -h localhost -P 3306 -umodx_new -p modx_new > dump.sqlИмпортировать бекап обратно можно так: mysql -h localhost -P 3306 -umodx_new -p modx_new < dump.sql Вопросы / Дубли ресурсов с одинаковым URL 8 0 2
[videoGallery] Видео галерея YouTube, Vimeo Невозможно установить пакет с подписью: videogallery-1.4.0-beta Ошибка установки Error в /core/packages/videogallery-1.4.0-beta/modCategory/7fc931a7772edc9752c16e9c41eb5e52.reso...
mxBoard: канбан-доска для команд, людей и ИИ-агентов в MODX 3 Привет, добавил пользователя в группу mxBoard(4), создал токен. Добавляю все в postman пишет: rest: { «success»: false, «message»: «Недействительный токен.», «data...
Релиз miniShop2 ver. 4.4.1 & 4.4.2 Подскажите пожалуйста, может я что-то не знаю или упустил. Но есть ли решение по глюку с radio? Указываешь свое radio c одинаковым name и в результате при переключении получаешь вс...
Плагин EnvBadge: визуальный индикатор окружения в админке MODX3 Расскажите пожалуйста как вы настраиваете сайт на MODX 3 чтобы был dev, prod, stage. Можете описать workflow? Допустим у меня 80% — это магазины, там клиенты, продажи, все онлай...
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, сервис-ориентированная архит...
либо ты можешь расширить Ext.BoxComponent как вариант
Примерно, так:
Теперь в место products подставляем productsTitle
Удаляем ненужный код:
функцию — outputArray
и вот эти строчки тоже ни к чему
Код сниппета ParseInsta:
И далее JSON обрабатываем через JS или конвертуть в массив и использовать в чанках
resolve.default_fields.php
я вот так делаю (немного вырвано из контекста, но принцип ясен):
Во-первых я настроил smtp сервер от Яндекса по мануалу modhost.pro/help/email
Во-вторых надо было настроить DNS. Тех. поддержка reg.ru в этом помогла:
Ну а в третьих проверить параметр emailTo, является ли введённый адрес реальным.
И да, очень помог компонент QuickEmail со сниппетом:
Импортировать бекап обратно можно так: