16 февраля 2025, 00:50 Заметил баг, если установлен controlErrorLog или modalConsole, то на странице CronTabManager они не работают. PR отправил github.com/astra-modx/modx-app-crontabmanager/pull/2 Новые дополнения и их версии / CrontabManager - работа из под console ssh 6 0
13 февраля 2025, 09:47 не совсем конечно о каком размере логов вы подумали, но у меня там минимум данных) ну или может текущий вариант расширить с файлом, чтобы не только последний лог хранило, но и предыдущие:) спасибо Новые дополнения и их версии / CrontabManager - работа из под console ssh 6 0
11 февраля 2025, 23:24 круто, больше нравится чем CronManager, хорошо проделанная работа) Может стоит добавить в _ctma_task_log поле text? Чтобы иметь возможность сохранять каждый лог, а не только данные по последнему логу и на диске? 1) и конечно же читать каждый лог отдельно в задании 2) вкладку где будут все логи по всем заданиям Новые дополнения и их версии / CrontabManager - работа из под console ssh 6 0
03 января 2025, 23:06 А, вот оно как, стоит дописать вот про это) Новости и события / Обновление рейтинга пользователей на MODX.pro 12 0
03 января 2025, 14:30 В целом все логично) Возможно временной период за коэффициент 1 должен быть до 3х месяцев ;) Новости и события / Обновление рейтинга пользователей на MODX.pro 12 0
12 февраля 2024, 22:35 на MODX 3 нету проекта с высокой нагрузкой для теста( Новые дополнения и их версии / [ExtSession] - Расширение стандартных сессий для MODX3 16 0
12 февраля 2024, 22:34 Под юзерами я имел в виду трафик на сайте согласно Яндекс Метрики А зарегистрированных около ~35 тысяч было. Это было больше года назад сейчас всех данных не вспомню, особенно по строкам Помню только что как только я переключил с smartSessionHandler на стандартный modSessionHandler — сразу начало работать как нужно :) Я обсужу с Заказчиком такой тест — и смогу в будущем поделиться данными. По настройкам было выставлено так: smartsessions_authorized_users_gc_maxlifetime = 2592000 smartsessions_bot_signatures = DataForSeoBot|Googlebot|YandexBot|DotBot|bingbot|Mail.RU_Bot|PetalBot|MegaIndex.ru|YandexDirectDyn|Adsbot|SemrushBot|facebookexternalhit|SEO|Spider|YaDirectFetcher|BLEXBot|AhrefsBot|YandexMobileBot|MJ12bot|Barkrowler|crawler|YandexMetrika|Applebot|YandexMarket|python-urllib3|vkShare|UptimeRobot|Pinterestbot smartsessions_bots_gc_maxlifetime = 259200 Новые дополнения и их версии / [ExtSession] - Расширение стандартных сессий для MODX3 16 0
12 февраля 2024, 19:42 Приветствую Вопрос, а проводилось ли тестирование работы под нагрузкой? Потому что на smartSessions при сроке жизнь 1 месяц, и большом количестве посещений (около полумиллиона юзеров в месяц) — сильно тормозило проект. Сильно это измерялось в секундах вроде. Боты исключались понятное дело. Новые дополнения и их версии / [ExtSession] - Расширение стандартных сессий для MODX3 16 0
13 ноября 2023, 14:26 Вот мое решение, может сразу упросит поиск по поводу datetime Данные в БД храню в integer формате в unixtimestamp Мне важно получить дату до какого времени оплачен доступ у юзера, потому условно дата 01/01/2023, то сохраняю 01/01/2023 23:59:59 (GMT+0000) Ну и соответственно потом показываю по разному данную дату (в подписи к полю — в привычном порядке для СНГ — день/месяц/год), а в самом поле, как по умолчанию месяц/день/год. И да, для сохранения заюзал еще одно системное событие OnBeforeUserFormSave <?php /* userFields */ switch ($modx->event->name) { case "OnMODXInit": $map = array( 'modUserProfile' => array( 'fields' => array( 'surname' => '', 'patronymic' => '', 'paid' => '', ), 'fieldMeta' => array( 'surname' => array( 'dbtype' => 'varchar', 'precision' => '100', 'phptype' => 'string', 'null' => false, 'default' => '', ), 'patronymic' => array( 'dbtype' => 'varchar', 'precision' => '100', 'phptype' => 'string', 'null' => false, 'default' => '', ), 'paid' => array( 'dbtype' => 'int', 'precision' => '10', 'phptype' => 'integer', 'null' => true, 'default' => null, ), ), ), ); 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['surname'] = htmlspecialchars($user->Profile->surname); $data['patronymic'] = htmlspecialchars($user->Profile->patronymic); $data['paid'] = date('m/d/Y', htmlspecialchars($user->Profile->paid)); $dateRus = date('d.m.Y', htmlspecialchars($user->Profile->paid)); $modx->controller->addHtml(" <script type='text/javascript'> Ext.ComponentMgr.onAvailable('modx-user-tabs', function() { this.on('beforerender', function() { var leftCol = this.items.items[0].items.items[0].items.items[0]; var rightCol = this.items.items[0].items.items[0].items.items[1]; leftCol.items.insert(4, 'modx-user-surname', new Ext.form.TextField({ id: 'modx-user-surname', name: 'surname', fieldLabel: 'Фамилия', xtype: 'textfield', anchor: '100%', maxLength: 255, value: '{$data['surname']}', })); leftCol.items.insert(5, 'modx-user-patronymic', new Ext.form.TextField({ id: 'modx-user-patronymic', name: 'patronymic', fieldLabel: 'Отчество', xtype: 'textfield', anchor: '100%', maxLength: 255, value: '{$data['patronymic']}', })); rightCol.items.insert(0, 'modx-user-paid', new Ext.form.DateField({ id: 'modx-user-paid', name: 'paid', fieldLabel: 'Оплачено ДО конца этой даты rus: {$dateRus}', xtype: 'datetime', format: 'm/d/Y', value: '{$data['paid']}', })); }); }); </script> "); } break; case "OnBeforeUserFormSave": $user->Profile->set('surname', $_POST['surname']); $user->Profile->set('patronymic', $_POST['patronymic']); $user->Profile->set('paid', strtotime($_POST['paid'].' 23:59:59')); break; } Пошаговые инструкции / Дополнительные поля профиля юзера (не extended) 138 0
06 февраля 2022, 20:39 А всё, сам добил: 'leftJoin' => '{ "big" : { "class" : "msProductFile", "alias" : "big", "on" : "big.product_id = msProduct.id AND path LIKE \'%/big/\' AND big.rank = 0" } }', 'select' => '{ "msProduct" : "*", "big" : "big.url as big" }' Вопросы / Присоеденить все фото для mFilter2 8 0
06 февраля 2022, 20:11 Добрый вечер. Поделитесь, пожалуйста. Вопросы / Присоеденить все фото для mFilter2 8 0
01 ноября 2021, 17:09 Спасибо. Упустил момент :( Немного пожив с включенным simpleQueue — почему-то дублируются заявки в AMO. И ежедневно проскакивает ошибка 401 =/ 1) Может быть связано с 401? 2) может ли помочь изменить CRON задачу с ежеминутного выполнения ~/www/core/components/amocrm/cron/secondlyrunner.php к примеру, на раз в 3 минуты? Новые дополнения и их версии / [simpleQueue] Простая очередь сообщений для других компонентов 10 0
20 октября 2021, 18:03 Добрый день Может быть есть готовый код для ajaxform и минишопа? А то когда из всех форм и заказы падают в АМОцрм, и врем отправки до секунд 10-12 доходит. Новые дополнения и их версии / [simpleQueue] Простая очередь сообщений для других компонентов 10 0
15 июня 2021, 17:39 Да, я это понимаю, я потому и указал про это. Но так как способ довольно быстро реализуем, то в этом случае так быстрее для меня было. Пошаговые инструкции / msPre добавление кастомного поля (списка с автодополнением) 4 0
14 мая 2021, 16:08 Ломает ссылки, который указаны как [[~1]] Для разработчиков / 1 плагин - 3 лайвхака 26 0
03 февраля 2021, 14:42 За 2 пункт больше спасибо! Быстро, просто и удобно Пошаговые инструкции / Изменяем форму заказа minishop2 19 0
23 сентября 2020, 17:41 тоже интересует этот вопрос. На странице раньше была выведена стоимость доставки. Теперь же это выглядит вот так з.ы. доставка бесплатна от 50 Новые дополнения и их версии / [msDifferentPricesDelivery] - Разные цены доставки 16 0
07 мая 2020, 18:58 Для того чтобы это сработало, в самом вызове надо указать что минимальный поиск от 2-х символов Например: [[!pdoPage? &element=`msProducts` &parents=`0` &resources=`[[!mSearch2:default=`999999`?returnIds=`1`&limit=`0`&minQuery=`2`]]` &sortby=`ids` &includeContent=`1` &includeThumbs=`big` &tplPagePrevEmpty=`@INLINE <li class="disabled"><span>«</span></li>` &tplPageNextEmpty=`@INLINE <li class="disabled"><span>»</span></li>` &tplPageWrapper=` @INLINE <div class="pagination"><ul class="pagination">[[+prev]][[+pages]][[+next]]</ul></div>` ]]Где добавляем &minQuery=`2`Либо же в быстром поиске. [[!mSearchForm? &element=`msProducts` &includeThumbs=`small` &tplForm=`tpl.mSearch2.form_prom` &tpl=`tpl.mSearch2.ac_prom` &pageId=`21` &minQuery=`2` ]] Вопросы / mSearch2 поиск по двум символам 1 0
09 марта 2020, 20:29 Да, достаточно сделать такую проверку, чтобы срабатывало только для типа содержимого text/html $type = $modx->resource->get('contentType'); if ($type == 'text/html') { $output = $html->save(); $html->clear(); unset($html); $output = preg_replace('|\s+|', ' ', $output); } Для разработчиков / Модифицируем HTML на лету 26 +1
09 марта 2020, 12:10 Эта конструкция вырезает удаляет переносы строк $output = $html->save(); $html->clear(); unset($html); $output = preg_replace('|\s+|', ' ', $output);Но как оказалось она работает в том числе и для документов со всеми типами содержимого, в том числе text Можно ли как-то ограничить действие только для типа содержимого HTML или исключить для text? Для разработчиков / Модифицируем HTML на лету 26 0
Плагин 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, сервис-ориентированная архит...
mxBoard: канбан-доска для команд, людей и ИИ-агентов в MODX 3 Для начала перейдем на Markdown, а дальше будет видно
MaxNotify3 Вышло обновление 1.3.0-pl (20.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет maxNotify3FormIt; — добавлены уведомления о заявках SendIt через hook-с...
PR отправил github.com/astra-modx/modx-app-crontabmanager/pull/2
ну или может текущий вариант расширить с файлом, чтобы не только последний лог хранило, но и предыдущие:)
спасибо
Может стоит добавить в _ctma_task_log поле text? Чтобы иметь возможность сохранять каждый лог, а не только данные по последнему логу и на диске?
1) и конечно же читать каждый лог отдельно в задании
2) вкладку где будут все логи по всем заданиям
Возможно временной период за коэффициент 1 должен быть до 3х месяцев ;)
А зарегистрированных около ~35 тысяч было. Это было больше года назад сейчас всех данных не вспомню, особенно по строкам
Помню только что как только я переключил с smartSessionHandler на стандартный modSessionHandler — сразу начало работать как нужно :)
Я обсужу с Заказчиком такой тест — и смогу в будущем поделиться данными.
По настройкам было выставлено так:
smartsessions_authorized_users_gc_maxlifetime = 2592000
smartsessions_bot_signatures = DataForSeoBot|Googlebot|YandexBot|DotBot|bingbot|Mail.RU_Bot|PetalBot|MegaIndex.ru|YandexDirectDyn|Adsbot|SemrushBot|facebookexternalhit|SEO|Spider|YaDirectFetcher|BLEXBot|AhrefsBot|YandexMobileBot|MJ12bot|Barkrowler|crawler|YandexMetrika|Applebot|YandexMarket|python-urllib3|vkShare|UptimeRobot|Pinterestbot
smartsessions_bots_gc_maxlifetime = 259200
Вопрос, а проводилось ли тестирование работы под нагрузкой?
Потому что на smartSessions при сроке жизнь 1 месяц, и большом количестве посещений (около полумиллиона юзеров в месяц) — сильно тормозило проект. Сильно это измерялось в секундах вроде. Боты исключались понятное дело.
Данные в БД храню в integer формате в unixtimestamp
Мне важно получить дату до какого времени оплачен доступ у юзера, потому условно дата 01/01/2023, то сохраняю 01/01/2023 23:59:59 (GMT+0000)
Ну и соответственно потом показываю по разному данную дату (в подписи к полю — в привычном порядке для СНГ — день/месяц/год), а в самом поле, как по умолчанию месяц/день/год.
И да, для сохранения заюзал еще одно системное событие OnBeforeUserFormSave
Поделитесь, пожалуйста.
Немного пожив с включенным simpleQueue — почему-то дублируются заявки в AMO.
И ежедневно проскакивает ошибка 401 =/
1) Может быть связано с 401?
2) может ли помочь изменить CRON задачу с ежеминутного выполнения ~/www/core/components/amocrm/cron/secondlyrunner.php к примеру, на раз в 3 минуты?
Может быть есть готовый код для ajaxform и минишопа?
А то когда из всех форм и заказы падают в АМОцрм, и врем отправки до секунд 10-12 доходит.
Но так как способ довольно быстро реализуем, то в этом случае так быстрее для меня было.
Быстро, просто и удобно
На странице раньше была выведена стоимость доставки.
Теперь же это выглядит вот так
з.ы. доставка бесплатна от 50
Например:
Где добавляем
Либо же в быстром поиске.
Но как оказалось она работает в том числе и для документов со всеми типами содержимого, в том числе text
Можно ли как-то ограничить действие только для типа содержимого HTML или исключить для text?