23 февраля 2026, 03:33 Вот так отображаются поля довольно красиво! Нужно создать поля: allowed_resources, date_start, date_end в базе данных в таблице modx_user_attributes. Это плагин: <?php /** * Plugin for adding custom fields to user profile * Events: OnMODXInit, OnUserFormPrerender, OnUserFormSave */ switch ($modx->event->name) { case "OnMODXInit": // Добавляем поля в карту объектов MODX $map = array( 'modUserProfile' => array( 'fields' => array( 'allowed_resources' => null, 'date_start' => null, 'date_end' => null, ), 'fieldMeta' => array( 'allowed_resources' => array( 'dbtype' => 'varchar', 'precision' => '191', 'phptype' => 'string', 'null' => true, 'default' => null, ), 'date_start' => array( 'dbtype' => 'int', 'precision' => '20', 'phptype' => 'integer', 'null' => true, 'default' => null, ), 'date_end' => array( 'dbtype' => 'int', 'precision' => '20', 'phptype' => 'integer', 'null' => true, 'default' => null, ), ), ), ); foreach ($map as $class => $data) { $modx->loadClass($class); foreach ($data['fields'] as $field => $default) { if (!isset($modx->map[$class]['fields'][$field])) { $modx->map[$class]['fields'][$field] = $default; if (isset($data['fieldMeta'][$field])) { $modx->map[$class]['fieldMeta'][$field] = $data['fieldMeta'][$field]; } } } } break; case "OnUserFormPrerender": // Проверяем существование пользователя if (!isset($user) || !is_object($user) || $user->get('id') < 1) { return; } $profile = $user->getOne('Profile'); if (!$profile) { return; } // Получаем значения полей $allowedResources = $profile->get('allowed_resources') ?: ''; $dateStart = $profile->get('date_start'); $dateEnd = $profile->get('date_end'); // Форматируем даты $dateStartFormatted = (!empty($dateStart) && is_numeric($dateStart)) ? date('Y-m-d', $dateStart) : ''; $dateEndFormatted = (!empty($dateEnd) && is_numeric($dateEnd)) ? date('Y-m-d', $dateEnd) : ''; // Экранируем для JavaScript $allowedResources = htmlspecialchars($allowedResources, ENT_QUOTES, 'UTF-8'); $js = <<<JS <script type="text/javascript"> Ext.onReady(function() { Ext.ComponentMgr.onAvailable('modx-user-tabs', function(panel) { panel.on('beforerender', function() { // Находим левую колонку первой вкладки var tabPanel = this.items && this.items.items && this.items.items[0]; if (!tabPanel) return; var formPanel = tabPanel.items && tabPanel.items.items && tabPanel.items.items[0]; if (!formPanel) return; var leftCol = formPanel.items && formPanel.items.items && formPanel.items.items[0]; if (!leftCol) return; // Создаем FieldSet с правильным layout var customFields = new Ext.form.FieldSet({ title: 'Доступ к ресурсам', collapsible: true, collapsed: false, style: 'margin-top: 15px; margin-bottom: 15px;', autoHeight: true, layout: 'form', // КЛЮЧЕВОЕ: включает отображение fieldLabel labelWidth: 150, anchor: '100%', defaults: { anchor: '100%', msgTarget: 'under' }, items: [ { xtype: 'textfield', name: 'allowed_resources', fieldLabel: 'Разрешенные ресурсы', maxLength: 191, value: '{$allowedResources}', listeners: { afterrender: function(cmp) { if (Ext.QuickTips) { Ext.QuickTips.register({ target: cmp.getEl(), text: 'ID ресурсов через запятую (например: 1,5,12,43)' }); } } } }, { xtype: 'datefield', name: 'date_start', fieldLabel: 'Дата начала доступа', format: 'Y-m-d', value: '{$dateStartFormatted}', emptyText: 'Выберите дату начала' }, { xtype: 'datefield', name: 'date_end', fieldLabel: 'Дата окончания доступа', format: 'Y-m-d', value: '{$dateEndFormatted}', emptyText: 'Выберите дату окончания' } ] }); // Добавляем в левую колонку leftCol.add(customFields); // Обновляем layout if (leftCol.doLayout) { leftCol.doLayout(); } if (panel.doLayout) { panel.doLayout(); } }); }); }); </script> <style type="text/css"> /* Стили для полей */ .x-fieldset { border: 1px solid #d0d0d0; padding: 10px; margin-bottom: 10px; } .x-fieldset legend { font-weight: bold; color: #333; padding: 0 5px; } .x-form-item { margin-bottom: 10px; } .x-form-item-label { font-weight: bold !important; color: #555; font-size: 12px; } .x-form-field-wrap { margin-bottom: 5px; } </style> JS; $modx->controller->addHtml($js); break; case "OnUserFormSave": if (!isset($user) || !is_object($user)) { return; } $profile = $user->getOne('Profile'); if (!$profile) { return; } $modified = false; // Сохраняем allowed_resources if (isset($_POST['allowed_resources'])) { $value = trim($_POST['allowed_resources']); $profile->set('allowed_resources', $value !== '' ? $value : null); $modified = true; } // Сохраняем date_start if (isset($_POST['date_start'])) { if (!empty($_POST['date_start'])) { $timestamp = strtotime($_POST['date_start']); if ($timestamp !== false) { $profile->set('date_start', $timestamp); $modified = true; } } else { $profile->set('date_start', null); $modified = true; } } // Сохраняем date_end if (isset($_POST['date_end'])) { if (!empty($_POST['date_end'])) { $timestamp = strtotime($_POST['date_end']); if ($timestamp !== false) { $profile->set('date_end', $timestamp); $modified = true; } } else { $profile->set('date_end', null); $modified = true; } } // Сохраняем профиль только если были изменения if ($modified) { $profile->save(); } break; } Пошаговые инструкции / Дополнительные поля профиля юзера (не extended) 138 0
03 апреля 2025, 12:03 Спасибо! За ответ… Буду искать почему так. Жаль документации нет к компоненту… Вопросы / msOptionPrice2 checkbox 5 0
03 апреля 2025, 12:03 Спасибо! За ответ… Буду искать почему так. Жаль документации нет к компоненту… Вопросы / msOptionPrice2 checkbox 5 0
03 апреля 2025, 10:35 Array ( [razmer] => 30 [dough] => Тонкое [modifications] => Array ( [0] => 29 [1] => 31 [2] => 51 [3] => 52 [4] => 53 ) [modification] => 0 ) вот такой массив уходит в корзину при выборе только одной опции. Я выбрал размер (это 29 модификация) и должна была отправится ещё 31 модификация(она по умолчанию выбрана), а вот почему отправляется 51,52,53 (это checkbox) которые даже не выбраны… Не понятно! Вопросы / msOptionPrice2 checkbox 5 0
13 декабря 2022, 21:36 ibb.co/kShNhN3 github.com/sweetalert2/sweetalert2/commit/47a88ca55c4aa4ffba61f2b2e732791ac08ec66f#diff-a6b38c88286015f973053c05716c670cdf9a2e4bb50c105f47830331d87cd431 Это стремно господа… Подмешивать в код украинскую музыку и гавнить всем подряд… Это не достойно звание разработчика! Вопросы / Отключить SweetAlert2 на определенных ресурсах 4 0
05 июня 2022, 10:24 Просто нужно скобки { } в скрипте отделить пробелами Вопросы / Помогите настроить цель Метрики в Minishop2 15 0
25 октября 2021, 10:08 Практически все дополнения с modstore перестали устанавливаться после скачивания.… Что то изменили в самом репопозитории?? Вопросы / Вывод даты в DateAgo 6 0
13 июля 2020, 21:07 Добрый день! Не с того не с сего компонент перестал работать. Не понятно я его даже не трогал. Пишит «Ошибка расчета доставки!» Вот скрин: Кто нибудь встречался с такой проблемой? Новые дополнения и их версии / [msShiptor] — расчет стоимости доставки «Shiptor» 91 0
13 мая 2020, 09:32 Как создать копию default-MIGX-grid? Вопросы / MIGX Как в админке добавить пагинацию 4 0
11 мая 2020, 20:03 Тоже задавался этим вопросом до сих пор не нашёл ответа :( Вопросы / MIGX Как в админке добавить пагинацию 4 0
17 февраля 2020, 22:17 Походу мне продали старьё((( Я не доволен ((( Новые дополнения и их версии / [mspYaCassa] - Яндекс Касса метод оплаты miniShop2 80 0
17 февраля 2020, 14:45 Столкнулся с проблемой когда купил это расширение. Оказывается у Яндекс кассы вышел новый API, а этот модуль сделан под старый. Пришлось упрашивать менеджеров чтобы они подсоединили старый API. Так что при покупке учитывайте это...Да и вопрос к разработчику: А будет ли обновлён этот модуль под новый API ????? Новые дополнения и их версии / [mspYaCassa] - Яндекс Касса метод оплаты miniShop2 80 0
29 января 2020, 12:34 Просто тут написано: «Далее как описано в статье подключаем плагин:if ($miniShop2 = $modx->getService('miniShop2')) { $miniShop2->addPlugin('order_table', '{core_path}components/minishop2/custom/order_table/index.php'); }», а в статье это не описано. От сюда и всё запара с этим мануалом… Готовые решения / [Решено] Как добавить новое поле в таблицу заказов? 25 0
29 января 2020, 11:31 У меня почему-то не заработало(((. ЧТо то как то трудно добавляются поля в админку в заказы. Не получается сделать… Уже много всяких мануалов прочитал… Непонятно как это сделать. Слишком намудрили в этом минишопе Готовые решения / Добавление своих полей в форму заказа [обновлено] 40 0
29 января 2020, 09:44 А как подключить плагин? В каком файле он подключается? Готовые решения / [Решено] Как добавить новое поле в таблицу заказов? 25 0
18 июля 2019, 11:01 У меня такая же проблеме. Можете подсказать? Что вы сделали чтобы заработали товары??? Новые дополнения и их версии / [mSync] Новая версия синхронизации с 1С 88 0
17 июля 2019, 15:07 Подскажите пожалуйста! В поддержке не отвечают. Может кто то здесь знает. Купил компонент mSync. Установил настроил. Начал делать выгрузку. Категории товаров выгрузились, а сами товары не выгружаются(((. В логах вот такие ошибки: [mSync] Не удалось создать привязку для параметров 1 [mSync] Привязка к товару для торгового предложения с uuid=90a9c35b-5cc4-11e8-806c-002522592c90 не найдена. Что делать? Как быть? Новые дополнения и их версии / [mSync] Новая версия синхронизации с 1С 88 0
02 июля 2019, 15:54 Компонент из упаковки почему-то не работает ( а именно не работает добавление событий в календарь). какая то ошибка в js скрите. Кто знает решение подскажите пожалуйста )))! Вопросы / myCalendar 6 0
UiCMPGenerator дополнение для создания пакетов Ближе к сентябрю, основная загвоздка это создание нормальной документации и видео обзора, а так пакет как бы уже готов
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
msImportExport не сохраняет родителя по умолчанию Компонент не понимает кирилические домены при загрузку фото. пример: Error download. Url : https://антаресдвери.рф/upload/iblock/a50/a50b2ef45305a3c18f6e298f1e134880.jpg. Message...
(
[razmer] => 30
[dough] => Тонкое
[modifications] => Array
(
[0] => 29
[1] => 31
[2] => 51
[3] => 52
[4] => 53
)
[modification] => 0
) вот такой массив уходит в корзину при выборе только одной опции. Я выбрал размер (это 29 модификация) и должна была отправится ещё 31 модификация(она по умолчанию выбрана), а вот почему отправляется 51,52,53 (это checkbox) которые даже не выбраны… Не понятно!
github.com/sweetalert2/sweetalert2/commit/47a88ca55c4aa4ffba61f2b2e732791ac08ec66f#diff-a6b38c88286015f973053c05716c670cdf9a2e4bb50c105f47830331d87cd431
Это стремно господа… Подмешивать в код украинскую музыку и гавнить всем подряд… Это не достойно звание разработчика!
«Далее как описано в статье подключаем плагин:if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->addPlugin('order_table', '{core_path}components/minishop2/custom/order_table/index.php');
}», а в статье это не описано. От сюда и всё запара с этим мануалом…
[mSync] Не удалось создать привязку для параметров 1
[mSync] Привязка к товару для торгового предложения с uuid=90a9c35b-5cc4-11e8-806c-002522592c90 не найдена.
Что делать? Как быть?
какая то ошибка в js скрите. Кто знает решение подскажите пожалуйста )))!