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
MaxNotify3 Вышло обновление 1.3.0-pl (20.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет maxNotify3FormIt; — добавлены уведомления о заявках SendIt через hook-с...
[Theme.Bootstrap] Новая версия с Bootstrap 4 Новая обновленная версия уже в магазине modstore.pro/packages/sites-themes/theme.bootstrap 4.1.0 (15.07.2026) — Added chunks for quick site setup: Scripts, Meta, Menu.*, Crumb...
Редизайн сообщества Спасибо, руки не дошли пока. Много всего другого делаю. Завтра поправлю все замечания.
Reactions — современная система реакций для MODX 3 [1.0.1-pl] — 2026-07-15 Added ReactionsCount: live-обновление рядом с виджетом (span.reactions-count + reactions:updated) без F5
Как ограничить вебмастеру доступ к заказам? Допустим вы закроете доступ к заказам и пользователям через админку, но для полноценной работы с сайтом нужен доступ в БД, а там вся эта информация есть и спрятать её невозможно, т...
Возможно ли реализовать возможность предоплаты за доставку на сайте? Отлично, значит можно не создавать заказ пока оплата не пройдёт успешно, а поскольку класс-обработчик оплаты будет кастомный сможет сами решать какую стоимость пробрасывать. Ещё на...
Что это нам бы дало.
К примеру Клиент решил заказать сайт на 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, можно немного подробнее?
Добавил такое поле:
Оно отображает текущее состояние чекбокса, но при изменении значения не меняет и в базу не сохраняет
где я что то упустил?
Если менять в бекенде то все меняется и в базу пишет нормально. И если менять в беке то и на фронте меняет значение.
нужен похожий способ что бы внести изменения в новые поля.