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
mxApi — быстрый внешний API для MODX Revolution Запрос: • зафиксировать публичный контракт EndpointInterface / метаданных по semver, чтобы наш провайдер не ломался на обновлениях; • паритет ядра между mxapi2 и mxapi3 (чтобы...
Как я использую 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 для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
Что это нам бы дало.
К примеру Клиент решил заказать сайт на 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, можно немного подробнее?
Добавил такое поле:
Оно отображает текущее состояние чекбокса, но при изменении значения не меняет и в базу не сохраняет
где я что то упустил?
Если менять в бекенде то все меняется и в базу пишет нормально. И если менять в беке то и на фронте меняет значение.
нужен похожий способ что бы внести изменения в новые поля.