24 марта 2023, 06:49 Дайте пожалуйста наводку. Ситуация такая — minishop2 4.0.0 (обновлялись с 2.5) — возможно это критично, /components/minishop2/js/web/default_custom.js и наверняка от 2.5 версии. — есть кастомная платежка, лежит в папке components/minishop2/custom/payment/rbs.class.php В ней реализован метод send, в конце такие строчки: if (!class_exists('msPaymentInterface')) { require_once dirname(dirname(dirname(__FILE__))) . '/handlers/mspaymenthandler.class.php'; ///model/minishop2/mspaymenthandler.class.php } public function send(msOrder $order) { ...... $response = curl_exec($curl); $response = json_decode($response, true); curl_close($curl); file_put_contents(MODX_ASSETS_PATH.'rbs.txt', '-------', FILE_APPEND); if ($this->config['logging']) { $this->modx->log(modX::LOG_LEVEL_ERROR, '[ms2:rbs] Метод ' . $method . ' gateway request: ' . print_r($data, 1) . ' gateway response:' . print_r($response, 1)); } return $response; }При оформления заказа file_put_contents и this->modx->log (при включенном логировании) — не отрабатывают, т.е. данный метод send вообще не запускается. Так же если сделать alert в callbacks.submit.response.success disk.yandex.ru/i/as4oZIV5VbkrsQ Видно, что нет redirect, отсюда и не перенаправляет на платежку. Если же сделать так: $o = $modx->getObject('msOrder', 1300); if ($payment = $modx->getObject('msPayment', array('id' => $o->get('payment'), 'active' => 1))) { $response = $payment->send($o); if (is_array($response)) { $response = json_encode($response, true); } exit($response); }То все отрабатывает и дает ссылку. Подскажите почему может не запускаться класс оплаты при оформлении с фронта? Новые дополнения и их версии / [miniShop2] 4.1.0 - большой релиз 62 0
24 марта 2023, 06:30 Все верно D = document; и да, чтобы писать короче. Пошаговые инструкции / [FetchIt] - Дополнительная валидация с помощью библиотеки yup 15 0
23 марта 2023, 15:30 буду следить (особенно жду эту фичу с дозагрузкой), понравился компонент, и сам начал пользоваться fetch в скриптах Js ванилу не так давно начал, поэтому такие огрехи встречаются :) let a = D.querySelector('.modalTmp form').getAttribute('data-fetchit') Пошаговые инструкции / [FetchIt] - Дополнительная валидация с помощью библиотеки yup 15 +1
23 марта 2023, 08:02 Спасибо, «кастомно» получилось if (FetchIt === undefined){ D.querySelector('head').append('<script src="/assets/components/fetchit/js/fetchit.js" defer=""></script>'); } if(!empty(FetchIt)){ let a = D.querySelector(".modalTmp").querySelector('form').getAttribute('data-fetchit') FetchIt.create({ action: a, assetsUrl: "/assets/components/fetchit/", actionUrl: "/assets/components/fetchit/action.php", inputInvalidClass: "is-invalid", customInvalidClass: "", clearFieldsOnSuccess: true, pageId: hashp, }); } Пошаговые инструкции / [FetchIt] - Дополнительная валидация с помощью библиотеки yup 15 0
22 марта 2023, 12:52 Подскажите пожалуйста, если форма подгружается после инициализации FetchIt, например модалку(с вызовом сниппета FetchIt) подгружаю по надобности, как на форму в модалке «инициализировать» FetchIt? Пошаговые инструкции / [FetchIt] - Дополнительная валидация с помощью библиотеки yup 15 0
19 марта 2023, 15:30 Используйте склонения если это проблема Нужно посмотреть что содержится в $_modx->resource.lang при выборе нескольких языков(массив или строка), оттуда делать подсчет. — Если массив, то просто {set $countLangs = count($_modx->resource.lang)} — Если строка, то через explode в массив, а дальше как предыдущем пункте Когда есть $countLangs пробуем так: {$countLangs | declension : 'яблоко|яблока|яблок'} // яблок {$countLangs | declension : 'яблоко|яблока|яблок' : true} // 3 яблока {$countLangs | decl : 'яблоко,яблока,яблок' : false : ','} // яблокоИли {if $countLangs > 1} {set $l = 'языках'} {else} {set $l = 'языке'} {/if} статья доступна на {$_modx->resource.lang} {$l} Вопросы / Условие вывод в fenom 3 0
08 марта 2023, 20:16 Не за что! В чем была проблема? Вопросы / Что-то не то с формированием заказа через API 19 0
08 марта 2023, 19:04 Тут дальше только выяснять постепенно как я писал вам ранее, выводите в лог или как то логгируйте, что получаете и т.д. сам Пример(!) как у меня работает я дал, ну и в теории повторюсь вы получаете строку с заказом ее надо из json вытащить и получить заказ. так же в вашем коде два раза вызывается $miniShop2->order->submit() Так же вы не поменяли $modx на $this->modx Адаптируйте мой код под ваш самостоятельно Вопросы / Что-то не то с формированием заказа через API 19 0
08 марта 2023, 18:41 у вас видимо какой-то отдельный компонент-класс и как вы его запускаете не совсем понятно, но пользуйтесь тогда для отладки, в разных участках кода $this->modx->log(1, print_r($result,1));Смотреть в Журнале ошибок в самом модх. Начните с самого простого в самом начале функции post() $this->modx->log(1, print_r('Это я class shopOrder2 запустился',1));если у вас журнале вообще ничего не выводит и ошибки тоже(и ошибки в серверном логе тоже нет), то скорее всего ваш класс вообще не запускается и с ним не работает modx или вы его вообще не вызываете и т.п. Вопросы / Что-то не то с формированием заказа через API 19 0
08 марта 2023, 18:11 код весь покажите тогда там еще $pdo->… выше получаю: $pdo = $modx->getService('pdoTools'); Вопросы / Что-то не то с формированием заказа через API 19 0
08 марта 2023, 16:54 не только 'json_response' => 1, а getService тоже смотрите параметры передаю Вопросы / Что-то не то с формированием заказа через API 19 0
08 марта 2023, 16:44 видимо у меня так же, т.е. нужно самостоятельно получить заказ, т.к. далее у меня такой код: $resp['r'] = $arr = json_decode($miniShop2->order->submit(),1); if($arr['success'] && $arr["data"]["msorder"] > 0){ $msOrder = $modx->getObject('msOrder', $arr["data"]["msorder"]); $order = $msOrder->toArray(); $resp['out'] = $pdo->parseChunk('@FILE cart/fastOrderSuccess.tpl',$arr); } Вопросы / Что-то не то с формированием заказа через API 19 0
08 марта 2023, 15:55 У меня так вызывается $scriptProperties = [ 'json_response' => 1, ]; /* возможно эта строчка поможет */ $miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties); $miniShop2->initialize($modx->context->key, $scriptProperties); $miniShop2->order->clean(); $miniShop2->cart->clean(); $miniShop2->cart->add($dataForm['id'],($dataForm["count"] ?: 1),$option); /* ... */ $resp['r'] = json_decode($miniShop2->order->submit(),1); Вопросы / Что-то не то с формированием заказа через API 19 0
05 марта 2023, 16:55 ну если хотите так же модх, как говорится первая ссылка в гугле perfkirill.ru/stati/modx/if-else-modx //Добавить еще условие :or:is=`[]` [[*gallery-page:is=``:or:is=`[]`:then=`пусто`:else=`есть фотографии`]] Вопросы / Отобразить migx галерею, но только если в ней есть картинки, иначе с другой страницы подгрузить 7 +1
05 марта 2023, 10:22 Если Вам, то, что Артур написал сложно, то Вам наверно мимо программирования или читать/учится больше надо. Ну и на феном переходите, на modx парсере все это еще хуже выглядит с точки зрения программирования. {set $gallery = $_modx->resource['gallery-page']} {if $gallery in list ['', '[]'] } /* Тут берем галерею из другого ресурса если текущая пустая */ {set $gallery = 1 | resource: 'gallery-page'} {/if} /* доп проверка на пустоту , мало ли на другом ресурсе тоже нет галереи */ {if !($gallery in list ['', '[]'])} /* Если не пусто то выводим в цикле */ {set $gArr = $gallery | fromJSON} {foreach $gArr as $item} <div>{$item['Ключ в migx']}</div> {/foreach} {/if} Вопросы / Отобразить migx галерею, но только если в ней есть картинки, иначе с другой страницы подгрузить 7 +1
14 февраля 2023, 08:31 Есть недавно созданный замечательный компонент AjaxFormitLogin {'!AjaxFormitLogin' | snippet : [ 'form' => 'updateProfileForm', 'snippet' => 'FormIt', 'hooks' => 'AjaxIdentification', 'method' => 'update', 'successMessage' => 'Данные сохранены.', 'clearFieldsOnSuccess' => 0, '-spamProtection' => 1 'validate' => 'email:required:email', 'validationErrorMessage' => 'Исправьте, пожалуйста, ошибки!', 'email.vTextRequired' => 'Укажите email.' ]} Вопросы / AjaxForm и Login 13 0
10 февраля 2023, 09:17 Навскидку так вроде. Кнопке добавить data-pagetitle <button ... data-pagetitle="{$pagetitle | htmlent}" ...>В js oncLickModal.addEventListener('show.bs.modal', function (e) { ..... // Добавляем эту строку, ставим pagetitle в .modal-title oncLickModal.querySelector('.modal-title').innerText = e.relatedTarget.dataset.pagetitle; }); Пошаговые инструкции / [СДЕЛАЙ САМ] SendIt и MiniShop2 - заказ в 1 клик - быстро, просто и бесплатно. 66 +1
08 февраля 2023, 12:32 Мои извинения. Как писал Артур выше Если не заработает оставь параметр tpl пустым — посмотри какие плейсхолдеры доступны Там поискать ваше поле и какое значение там. Возможно там json или что-то типа того Вопросы / Не получается создать каталог с картинками 29 0
08 февраля 2023, 11:42 То что они лежат где-то это одно. Вам же нужно выбрать у каждого ресурса иpображение, Например открываете ресурс «Лампочки», там вкладка Доп поля и там ваше поле должно отображаться, если вы указали для TV шаблон в котором отображать это поле. В итоге В вашем поле выбираете нужное вам изображение и сохраняете ресурс. Должно быть заполнено: disk.yandex.ru/i/1E2QED82nhDY8w Все довольно просто, никаких источников файлов для быстрого старта не надо создавать. TV — Ввод Изображение — Выбрать для какого(их) шаблонов отображать — Зайти в ресурс(ы) и выбрать/загрузить картинку к нему Вопросы / Не получается создать каталог с картинками 29 0
08 февраля 2023, 11:06 Имеется ввиду Вы картинку точно загрузили к ресурсу? Потому что, [[+imagecat]] или [[+tv.imagecat]] должны что-то выдавать, если нет опечаток и изображение загружено. И у тв лучше сделать так: Параметр ввода изображение или что-то удобное вам А параметр вывода вообще не трогать, оставить по умолчанию Вопросы / Не получается создать каталог с картинками 29 0
Как я использую mxBoard для работы с ИИ-агентами Немного непонятно, зачем здесь MODX. Агенты работают именно над этим сайтом или это какой-то общий оркестратор, и на доске могут быть карточки по разным сайтам? А ещё расскажи, ...
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс Вообще не понял о чем речь) В системной настройке service_js сейчас указана ссылка smartcaptcha.cloud.yandex.ru/captcha.js Я предложил очистить эту настройку, тогда компонент н...
mxBackup — обезличенные копии MODX в пару кликов Ещё нет, я там разом почти полтора десятка пакетов выложил модератор, вероятно, а шоке.
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
— minishop2 4.0.0 (обновлялись с 2.5)
— возможно это критично, /components/minishop2/js/web/default_custom.js и наверняка от 2.5 версии.
— есть кастомная платежка, лежит в папке components/minishop2/custom/payment/rbs.class.php
В ней реализован метод send, в конце такие строчки:
При оформления заказа file_put_contents и this->modx->log (при включенном логировании) — не отрабатывают, т.е. данный метод send вообще не запускается.
Так же если сделать alert в callbacks.submit.response.success
disk.yandex.ru/i/as4oZIV5VbkrsQ
Видно, что нет redirect, отсюда и не перенаправляет на платежку.
Если же сделать так:
То все отрабатывает и дает ссылку.
Подскажите почему может не запускаться класс оплаты при оформлении с фронта?
Js ванилу не так давно начал, поэтому такие огрехи встречаются :)
Нужно посмотреть что содержится в $_modx->resource.lang при выборе нескольких языков(массив или строка), оттуда делать подсчет.
— Если массив, то просто {set $countLangs = count($_modx->resource.lang)}
— Если строка, то через explode в массив, а дальше как предыдущем пункте
Когда есть $countLangs пробуем так:
Или
так же в вашем коде два раза вызывается $miniShop2->order->submit()
Так же вы не поменяли $modx на $this->modx
Адаптируйте мой код под ваш самостоятельно
Смотреть в Журнале ошибок в самом модх.
Начните с самого простого в самом начале функции post()
если у вас журнале вообще ничего не выводит и ошибки тоже(и ошибки в серверном логе тоже нет), то скорее всего ваш класс вообще не запускается и с ним не работает modx или вы его вообще не вызываете и т.п.
там еще $pdo->… выше получаю:
$pdo = $modx->getService('pdoTools');
perfkirill.ru/stati/modx/if-else-modx
Ну и на феном переходите, на modx парсере все это еще хуже выглядит с точки зрения программирования.
Кнопке добавить data-pagetitle
В js
Как писал Артур выше
Там поискать ваше поле и какое значение там. Возможно там json или что-то типа того
Например открываете ресурс «Лампочки», там вкладка Доп поля и там ваше поле должно отображаться, если вы указали для TV шаблон в котором отображать это поле. В итоге В вашем поле выбираете нужное вам изображение и сохраняете ресурс.
Должно быть заполнено: disk.yandex.ru/i/1E2QED82nhDY8w
Все довольно просто, никаких источников файлов для быстрого старта не надо создавать.
TV
— Ввод Изображение
— Выбрать для какого(их) шаблонов отображать
— Зайти в ресурс(ы) и выбрать/загрузить картинку к нему
И у тв лучше сделать так:
Параметр ввода изображение или что-то удобное вам
А параметр вывода вообще не трогать, оставить по умолчанию