03 января 2022, 12:10 Люблю Modx Спасибо вам за вашу работу господа) Для разработчиков / Итоги 2021 года для modx сообщества 1 +1
02 февраля 2021, 10:54 По хорошему, как мне кажется, было бы круто на сайте сделать сервис по фрилансу. Тип что бы не в чатике MW делались заказы, а что бы клиент заходил на сайт, оставлял заявку, на сайте же оставлял телегу + полную оплату. Которая висела бы на сайте до нажатия на кнопку заказ выполнен в срок и тд. И ботом это все закидывать в сам чатик с контактами заказчика. Что это нам бы дало. К примеру Клиент решил заказать сайт на modxRevo, оценил его в 30 000. Дал срок 3 недели. И перевел сумму на сайт полностью. Она где то зависла в недрах сайта. В чатик упал заказ, я решил его взять. Написал клиенту в ТГ и скинул ему свой логин с modx.pro. Он зашел на сайт вбил меня в спец поле и я стал исполнителем. Далее возможно несколько вариантов. 1) Я сделал заказ в срок все довольны и клиент нажал на кнопку «Заказ выполнен хорошо и в срок» я получил свои 29 000 а 1 000 ушла сайту. 2)Я все сделал но опоздал на неделю. Клиент в целом доволен, но у него после истечения срока заказа появляется возможность урезать сумму на 20-30-40% в зависимости от его недовольства и срока. В этом случае я получу условно 20к и 1к уйдет сайту. 3) Я не выполнил заказ, клиент вернул предоплату а исполитель улетел в бан и при попытке его выбрать будет писаться что исполнитель мудак 4) Я выполнил заказ но клиент морозится и придумывает правки и проч, т.к. деньги на сайте, я могу запросить свои законные 28к а 2к уходит сайту т.к. они переводятся без одобрения клиента и сайт берет на себя некие риски. Как то так, система конечно не до конца продумана но мне кажется это всем упростит жизнь. Так же бота можно научить постить отзывы от заказчиков, мнения о клиентах и вести базу ЧС и недобросовестных заказчиков. Новости и события / Обновление сообщества modx.pro. Что ждут пользователи? 71 +2
17 декабря 2020, 10:22 Меня как человека который доку читает постоянно, раздражает то что она не актуализирована. К примеру тот же HybridAuth дока написана лет 5 назад, гугл и фейсбук уже вообще по другому работают и дока не актуальна от слова совсем. И такого вполне много. Новости и события / Чего не хватает Вам в документации? 19 0
23 октября 2020, 12:11 1) Не хватает возможности выбрать в msOrder тип вывода вариантов доставки оплаты, часто по дизайну надо вывести select с опциями и лично у меня всегда это оч геморно проходит. 2) Не хватает возможности определить count в виде целых\дробных чисел 3) Не хватает встроеного решения для распечатки конктретного заказа, без посторонних компонентов Для разработчиков / Чего не хватает в miniShop2? 82 +1
25 апреля 2020, 02:42 Оч крутой компонент, да у него не самые большие возможности, но как же он помогает в организации ресурсов и шаблонов. Но как по мне немного перемудрил с TV. Возможно стоило бы сделать что то типо, как с шаблоном (выбор иконки для шаблона). Тоесть мы создали TV привязали к шаблону, и в шаблон добавилось такое же поле как у тебя в выборе иконки шаблона. Все выбрали нужную иконку и вуаля. ТАк же было бы прикольно в Системные настройки запихнуть, возможность выбирать 4 или 5 версию, и если у тебя к примеру есть купленная подписка, то сделать возможность добавить логин и пароль. Или как оно работает не оч осведомлен. Но за обнову спасибо. Новые дополнения и их версии / [IconTV] Новый тип TV с иконками 6 +1
07 марта 2020, 13:10 Ему б еще подобреть к новичкам немного)))) Пошаговые инструкции / Генерация файла sitemap.xml для мультиязычного сайта 7 0
11 февраля 2020, 17:19 Планирую купить ваш компонент, однако задача стоит нетривиальная. Может ли ваш компонент по клику менять цену в [[+price]]. Допустим менеджер внес цену в евро (т.к. именно в евро ему дает цену поставщик), потом он нажимает где то в админке кнопку и цена меняется именно в поле [[+price]] на рубли. В общем клиент хочет менять валюту в бекенде точнее в своей админке причем именно нажатием на кнопку, он не планирует импортировать товары. Новые дополнения и их версии / msMultiCurrency 69 0
08 февраля 2020, 18:55 Не совсем понятно откуда цена, по сути взят рандомный html шаблон, накинут дефолтный minishop2 и все. Я готов подобное решение купить но только если после его установки все что будет надо это внести реальные данные. а этот шаблон нужно еще часов 20 доводить до ума, что бы он выглядел хотя бы адекватно и современно Сайты на MODX / Alistyle первый шаблон из серии готовых решений для MODX Revolution 32 0
06 февраля 2020, 15:11 А можно пример скрытого поля, а то как я его только не добавлял, не получается записать в БД 0 для чекбокса. Пошаговые инструкции / Дополнительные поля профиля юзера (не extended) 138 0
06 февраля 2020, 14:36 UPD: добился того, что бы в базу записывало состояние checked, однако в бекенд состояние почему то не передается, то есть галочка не появляется в беке, потому, если Пользователя сохранить — состояние сбрасывается на 0 и в БД перезаписывается. мой вызов: <?php switch ($modx->event->name) { case "OnMODXInit": $map = array( 'modUser' => array( 'fields' => array( 'spam_sms' => 1, 'spam_viber' => 1, 'spam_email' => 1, 'zak_email' => 1, 'zak_sms' => 1, 'zak_viber' => 1, ), 'fieldMeta' => array( 'spam_email' => array( 'dbtype' => 'tinyint', 'precision' => '1', 'phptype' => 'boolean', 'attributes' => 'unsigned', 'null' => false, 'default' => 1, ), 'spam_viber' => array( 'dbtype' => 'tinyint', 'precision' => '1', 'phptype' => 'boolean', 'attributes' => 'unsigned', 'null' => false, 'default' => 1, ), 'spam_sms' => array( 'dbtype' => 'tinyint', 'precision' => '1', 'phptype' => 'boolean', 'attributes' => 'unsigned', 'null' => false, 'default' => 1, ), 'zak_email' => array( 'dbtype' => 'tinyint', 'precision' => '1', 'phptype' => 'boolean', 'attributes' => 'unsigned', 'null' => false, 'default' => 1, ), 'zak_sms' => array( 'dbtype' => 'tinyint', 'precision' => '1', 'phptype' => 'boolean', 'attributes' => 'unsigned', 'null' => false, 'default' => 1, ), 'zak_email' => array( 'dbtype' => 'tinyint', 'precision' => '1', 'phptype' => 'boolean', 'attributes' => 'unsigned', 'null' => false, 'default' => 1, ), ), ), ); foreach ($map as $class => $data) { $modx->loadClass($class); foreach ($data as $tmp => $fields) { if ($tmp == 'fields') { foreach ($fields as $field => $value) { foreach (array('fields', 'fieldMeta', 'indexes') as $key) { if (isset($data[$key][$field])) { $modx->map[$class][$key][$field] = $data[$key][$field]; } } } } elseif ($tmp == 'composites' || $tmp == 'aggregates') { foreach ($fields as $alias => $relation) { if (!isset($modx->map[$class][$tmp][$alias])) { $modx->map[$class][$tmp][$alias] = $relation; } } } } } break; case "OnUserFormPrerender": if (!isset($user) || $user->get('id') < 1) { return; } if (!$modx->getCount('modPlugin', array('name' => 'AjaxManager', 'disabled' => false))) { $data['spam_email'] = $user->Profile->spam_email ? 'true' : 'false'; $data['spam_sms'] = $user->Profile->spam_sms ? 'true' : 'false'; $data['spam_viber'] = $user->Profile->spam_viber ? 'true' : 'false'; $data['zak_email'] = $user->Profile->zak_email ? 'true' : 'false'; $data['zak_sms'] = $user->Profile->zak_sms ? 'true' : 'false'; $data['zak_viber'] = $user->Profile->zak_viber ? 'true' : 'false'; $modx->controller->addHtml(" <script type='text/javascript'> Ext.ComponentMgr.onAvailable('modx-user-tabs', function() { this.on('beforerender', function() { var rightCol = this.items.items[0].items.items[0].items.items[1]; rightCol.items.insert(0, 'modx-user-spam_email', new Ext.form.Checkbox({ id: 'modx-user-spam_email', name: 'spam_email', hideLabel: true, boxLabel: 'Рассылка на Email', description: 'Пользователь отметил E-mail для рассылки рекламы', xtype: 'xcheckbox', inputValue: 1, listeners: { beforerender: function(that) { that.hiddenField = new Ext.Element(document.createElement('input')).set({ type: 'hidden', name: that.name, value: 0, }); }, afterrender: function(that) { that.el.insertHtml('beforeBegin', that.hiddenField.dom.outerHTML); }, }, checked: {$data['spam_email']}, })); rightCol.items.insert(0, 'modx-user-spam_viber', new Ext.form.Checkbox({ id: 'modx-user-spam_viber', name: 'spam_viber', hideLabel: true, boxLabel: 'Рассылка на Viber', description: 'Пользователь отметил Viber для рассылки рекламы', xtype: 'xcheckbox', inputValue: 1, listeners: { beforerender: function(that) { that.hiddenField = new Ext.Element(document.createElement('input')).set({ type: 'hidden', name: that.name, value: 0, }); }, afterrender: function(that) { that.el.insertHtml('beforeBegin', that.hiddenField.dom.outerHTML); } }, checked: {$data['spam_viber']}, })); rightCol.items.insert(0, 'modx-user-spam_sms', new Ext.form.Checkbox({ id: 'modx-user-spam_sms', name: 'spam_sms', hideLabel: true, boxLabel: 'Рассылка на SMS', description: 'Пользователь отметил SMS для рассылки рекламы', xtype: 'xcheckbox', inputValue: 1, listeners: { beforerender: function(that) { that.hiddenField = new Ext.Element(document.createElement('input')).set({ type: 'hidden', name: that.name, value: 0, }); }, afterrender: function(that) { that.el.insertHtml('beforeBegin', that.hiddenField.dom.outerHTML); } }, checked: {$data['spam_sms']}, })); rightCol.items.insert(0, 'modx-user-zak_email', new Ext.form.Checkbox({ id: 'modx-user-zak_email', name: 'zak_email', hideLabel: true, boxLabel: 'Оповещение о заказе на Email', description: 'Пользователь отметил E-mail для оповещения О поступлении', xtype: 'xcheckbox', inputValue: 1, listeners: { beforerender: function(that) { that.hiddenField = new Ext.Element(document.createElement('input')).set({ type: 'hidden', name: that.name, value: 0, }); }, afterrender: function(that) { that.el.insertHtml('beforeBegin', that.hiddenField.dom.outerHTML); } }, checked: {$data['zak_email']}, })); rightCol.items.insert(0, 'modx-user-zak_sms', new Ext.form.Checkbox({ id: 'modx-user-zak_sms', name: 'zak_sms', hideLabel: true, boxLabel: 'Оповещение о заказе по SMS', description: 'Пользователь отметил SMS для оповещения О поступлении', xtype: 'xcheckbox', inputValue: 1, listeners: { beforerender: function(that) { that.hiddenField = new Ext.Element(document.createElement('input')).set({ type: 'hidden', name: that.name, value: 0, }); }, afterrender: function(that) { that.el.insertHtml('beforeBegin', that.hiddenField.dom.outerHTML); } }, checked: {$data['zak_sms']}, })); rightCol.items.insert(0, 'modx-user-zak_viber', new Ext.form.Checkbox({ id: 'modx-user-zak_viber', name: 'zak_viber', hideLabel: true, boxLabel: 'Оповещение о заказе по Viber', description: 'Пользователь отметил Viber для оповещения О поступлении', xtype: 'xcheckbox', inputValue: 1, listeners: { beforerender: function(that) { that.hiddenField = new Ext.Element(document.createElement('input')).set({ type: 'hidden', name: that.name, value: 0, }); }, afterrender: function(that) { that.el.insertHtml('beforeBegin', that.hiddenField.dom.outerHTML); } }, checked: {$data['zak_viber']}, })); }); }); </script> "); } break; }В ответе выше говорилось про скрытое поле перед checkbox, можно немного подробнее? Пошаговые инструкции / Дополнительные поля профиля юзера (не extended) 138 0
06 февраля 2020, 13:52 Все же не получается завести в форме Office checkbox Добавил такое поле: <input type="checkbox" id="spam_email" class="jqIgnore" name="spam_email" value="1" {(0 | user : 'spam_email') ? 'checked' : ''}>Оно отображает текущее состояние чекбокса, но при изменении значения не меняет и в базу не сохраняет где я что то упустил? Если менять в бекенде то все меняется и в базу пишет нормально. И если менять в беке то и на фронте меняет значение. Пошаговые инструкции / Дополнительные поля профиля юзера (не extended) 138 0
05 февраля 2020, 17:45 А как созданные поля изменить из фронтенда без применения дополнения типа Office, В ЛК есть несколько вкладок на одной из них уже есть [[!Office? &action=`Profile` &tplProfile=`Office.profile.form_tpl` &profileFields=`username,email,phone,dob,extended[insta]` ]]нужен похожий способ что бы внести изменения в новые поля. Пошаговые инструкции / Дополнительные поля профиля юзера (не extended) 138 0
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Вложенный migx тоже переведет??
PageBuilder — визуальный конструктор страниц для MODX 3 Класс! Пара моментов смутила: 1. Почему бы чанки сразу не вынести в файлы? 2. На фронте грузится свой CSS для стандартных блоков<link rel="stylesheet" href="/a...
mxDadata — интеграция DaData (Suggest, Clean, Party) с MODX 3 и MiniShop3 Вышла новая версия: [1.0.2-pl] — 2026-10-06 Fixed #9 Права mxdadata_edit, mxdadata_logs, mxdadata_cache_clear теперь проверяются в connector.php и в Processors\Mgr\Pr...
msp3PaymentSkeleton — шаблон для создания платёжных дополнений MiniShop3 вот круто. я как то писал платежное дополнение и парился как что. а теперь надеюсь все проше будет :-)
MiniShop3 1.2.0 - 1.3.0 Самое интересное Пообщались с клиентом он сказал что тыкал в позицию т.к. она не добавлялась (видимо лагал инет) и вот она размножилась таким образом.
Modx Revo 2.8.8 + Minishop 2 (4.4.2) + Babel 3.5.2 - превью товаров в админке у дополнител... Сначала сравните ответ connector для исходного товара и его перевода во вкладке Network. Если у перевода поле миниатюры пустое, смена чанка или рендерера сама картинку не добавит: ...
Сайт тормозит сервер, грузит процессор на 100% полезно посмотреть, какие URL запрашивают эти боты и сколько времени занимает их обработка. Частые обращения к поиску и фильтрам могут нагружать PHP сильнее, чем обычные страницы. ...
Подскажите насколько это рабочее решение Спасибо за ответ. У меня время создания заказа равно времени оплаты. Заказ оплачивается сразу через iframe на сайте. При нажатии на кнопку «оформить заказ» всплывает окошко робокас...
Не всегда срабатывает JS-событие Здесь лучше разделить «заказ создан» и «заказ оплачен». Первое событие фиксируется при успешном создании заказа, второе — после проверенного уведомления платёжной системы на сервер...
Что это нам бы дало.
К примеру Клиент решил заказать сайт на modxRevo, оценил его в 30 000. Дал срок 3 недели. И перевел сумму на сайт полностью. Она где то зависла в недрах сайта. В чатик упал заказ, я решил его взять. Написал клиенту в ТГ и скинул ему свой логин с modx.pro. Он зашел на сайт вбил меня в спец поле и я стал исполнителем.
Далее возможно несколько вариантов.
1) Я сделал заказ в срок все довольны и клиент нажал на кнопку «Заказ выполнен хорошо и в срок» я получил свои 29 000 а 1 000 ушла сайту.
2)Я все сделал но опоздал на неделю. Клиент в целом доволен, но у него после истечения срока заказа появляется возможность урезать сумму на 20-30-40% в зависимости от его недовольства и срока. В этом случае я получу условно 20к и 1к уйдет сайту.
3) Я не выполнил заказ, клиент вернул предоплату а исполитель улетел в бан и при попытке его выбрать будет писаться что исполнитель мудак
4) Я выполнил заказ но клиент морозится и придумывает правки и проч, т.к. деньги на сайте, я могу запросить свои законные 28к а 2к уходит сайту т.к. они переводятся без одобрения клиента и сайт берет на себя некие риски.
Как то так, система конечно не до конца продумана но мне кажется это всем упростит жизнь. Так же бота можно научить постить отзывы от заказчиков, мнения о клиентах и вести базу ЧС и недобросовестных заказчиков.
2) Не хватает возможности определить count в виде целых\дробных чисел
3) Не хватает встроеного решения для распечатки конктретного заказа, без посторонних компонентов
мой вызов:
В ответе выше говорилось про скрытое поле перед checkbox, можно немного подробнее?
Добавил такое поле:
Оно отображает текущее состояние чекбокса, но при изменении значения не меняет и в базу не сохраняет
где я что то упустил?
Если менять в бекенде то все меняется и в базу пишет нормально. И если менять в беке то и на фронте меняет значение.
нужен похожий способ что бы внести изменения в новые поля.