Николай Савин · 29 марта 2022, 13:55 Если отключить — то получается не смогут. Согласен здесь проблема. Наиболее простое решение это опираться на IP адрес клиента и срывать\показывать нужные компоненты. Но это отдельный проект. Владельцы и разработчики далеко не дураки — я думаю в конце концов придумают решение. Новости и события / Facebook и instagram теперь Запрещены 5 0 1
Prihod · 16 февраля 2022, 14:55 $polylang = $modx->getService('polylang', 'Polylang')) { $tools = $polylang->getTools(); $fieldName = 'my_field'; $xtype = 'polylang-field'; // textarea,polylang-text-editor,polylang-code-editor,polylang-combo,polylang-combo-boolean,polylang-field $meta = $modx->getFieldMeta('modResource'); $data = array( 'caption' => $fieldName, 'description' => '', 'xtype' => $xtype, 'code' => '', 'active' => 1, 'required' => 0, 'rank' => 0, 'meta' => isset($meta[$fieldName]) ? $meta[$fieldName] : array() ); $tools->addField('PolylangContent', $fieldName , $data); Новые дополнения и их версии / Polylang 145 +1 1
Sergey (Sentinel) · 15 декабря 2020, 22:20 @Павел Гвоздь Паш подскажи плиз вывожу опцию <div class="form-group create" > <label>Для кого</label> <input type="hidden" class="form-control [ js-ms2f-combobox-auto ]" name="options-for_whom"> </div>но в админке вот так как правильно прописать? Новые дополнения и их версии / [ms2form] 1.4.0 Возрождение 12 0 1
Sergey (Sentinel) · 25 апреля 2020, 18:19 в tinymcerte.toolbar1 добавляем fontsizeselect forecolor в tinymcerte.plugins добавляем textcolor все toolbar undo redo | styleselect | bold italic underline | fontselect fontsizeselect forecolor backcolor | alignleft aligncenter alignright | bullist numlist outdent indent | link image | code Вопросы / Tinymce RTE дополнительные размеры шрифтов 5 0 3
mngatoff · 02 декабря 2019, 02:25 плюс этого варианта еще и в том, что его можно без изменений использовать в карточке товара в форме добавления в корзину Готовые решения / Плюс и минус в каунте корзины MS2 13 0 1
Андрей · 27 марта 2019, 20:26 Я таким способом пользуюсь, просто дата файла if ($modx->event->name == 'pdoToolsOnFenomInit') { // return file version $fenom->addModifier('version', function ($input) use ($modx) { $output = $input; $file = MODX_BASE_PATH.$input; if (file_exists($file)) { $output = $input.'?v='.filemtime($file); } return $output; }); } Готовые решения / Автоматическая смена версии стилей при очистке кэша в MODX 17 +1 1
Василий Stepanov · 02 апреля 2017, 04:18 Сделал вот так. Работает. //собираем заголовки из категории ресурсов $docfind = $modx->getCollection('modResource',array('parent' => '19')); foreach ($docfind as $k => $res) { $title_m = $res->get('pagetitle'); $titles[] = $title_m; } $path = 'http://www.amur.info/index.rss'; $ctx = stream_context_create(array('http' => array('timeout' => 6))); $file = file_get_contents($path, 0, $ctx); if ($file) { $rss = simplexml_load_string($file); $i = 0; foreach ($rss->channel->item as $item){ $namespaces = $item->getNameSpaces(true); $yandex = $item->children($namespaces['yandex']); $full_text = (string)$yandex->{'full-text'}; //полный текст статьи $title = $item->title; //заголовок статьи $pubdate = $item->pubDate; //дата публикации $link = $item->link; //ссылка на новость //создаем ресурсы в MODX, если ресурсов с такими заголовками еще нет if (in_array($title, $titles) == false) { $response = $modx->runProcessor('resource/create', array( 'pagetitle' => $title, 'longtitle' => $pubdate, 'description' => $link, 'introtext' => '', 'content' => $full, 'template' => $template, 'hidemenu' => 1, 'published' => 1, 'parent' => '19' )); } $i++; if ($i == 5) break; } } Вопросы / Парсинг RSS и создание новых ресурсов 4 +1 2
Владимир Тельнов · 18 марта 2017, 01:58 Разобрался. У меня стояла задача добавить поля «Дом» и «Номер квартиры» в профиль пользователя и отображать содержимое этих полей при создании нового заказа в miniShop2. Поля building и room — это единственные поля, которые не совпадают с полями в стандартном профиле пользователя, в результате чего при создании нового заказа приходится указывать номер дома и квартиры каждый раз в ручную. Выполнил инструкцию из первого поста. После чего внес изменения в параметры сниппета officeProfile и в чанки tpl.msOrder (miniShop2), tpl.Office.profile.form (Office) Для отображения нового поля в профиле в параметрах сниппета officeProfile, в раздел profileFields необходимо добавить поле new_field и соответствующее поле input <input type="text" name="new_field" placeholder="" value="[[+modx.user.id:userinfo=`new_field`]]"/>Для отображения нового поля при создании нового заказа в чанке tpl.msOrder отредактировал соответсвущий input {foreach ['building'] as $field} <input type="text" id="{$field}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}" name="{$field}" value="[[+modx.user.id:userinfo=`new_field`]]" class="form-control{($field in list $errors) ? ' error' : ''}"> {/foreach} Пошаговые инструкции / Дополнительные поля профиля юзера (не extended) 138 0 2
Наумов Алексей · 26 января 2017, 15:24 Нужен плагин, примерно такой: <?php if ($modx->event->name == 'OnLoadWebDocument') { $request = $_SERVER['REQUEST_URI']; $params = ''; if (strpos($request, '?') !== false) { list($request, $params) = explode('?', $request); } $uri = $request; if(!empty($uri) && strpos($uri, '.') === false && substr($uri, -1, 1) != '/') { $uri .= '/'; if (!empty($params)) { $uri .= '?' . $params; } $modx->sendRedirect($uri, array('responseCode' => 'HTTP/1.1 301 Moved Permanently')); } } Вопросы / Как добавить слэш в конце URL? 3 +1 3
Максим · 07 октября 2016, 06:49 Здравствуйте. Помогите разобраться. Мне нужно добавить 2 текстовых поля. На данный момент плагин выглядит так <?php switch ($modx->event->name) { case "OnMODXInit": $map = array( 'modUser' => array( 'fields' => array( 'executor' => 1, ), 'fieldMeta' => array( 'executor' => array( 'dbtype' => 'tinyint', 'precision' => '1', 'phptype' => 'boolean', 'attributes' => 'unsigned', 'null' => false, 'default' => 1, ), ), ), 'modUserProfile' => array( 'fields' => array( 'surname' => '', 'patronymic' => '', ), 'fieldMeta' => array( 'surname' => array( 'dbtype' => 'varchar', 'precision' => '255', 'phptype' => 'string', 'null' => false, ), ), 'fieldMeta' => array( 'patronymic' => array( 'dbtype' => 'varchar', 'precision' => '255', 'phptype' => 'string', 'null' => false, ), ), ), ); 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['executor'] = $user->executor ? 'true' : 'false'; $data['surname'] = htmlspecialchars($user->Profile->surname); $data['patronymic'] = htmlspecialchars($user->Profile->patronymic); $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]; // Добавляем новое поле в левую колонку 3ым по счёту полем (перед полем 'Email') leftCol.items.insert(3, 'modx-user-new-field', new Ext.form.TextField({ id: 'modx-user-new-field', name: 'surname', fieldLabel: 'Фамилия', xtype: 'textfield', anchor: '100%', maxLength: 255, value: '{$data['surname']}', })); leftCol.items.insert(4, 'modx-user-patronymic-field', new Ext.form.TextField({ id: 'modx-user-patronymic-field', name: 'patronymic', fieldLabel: 'Отчество', xtype: 'textfield', anchor: '100%', maxLength: 255, value: '{$data['patronymic']}', })); // Скрытое поле с нулевым значением, для корректной обработки чекбокса при сохранении ncb_hiddenField = new Ext.Element(document.createElement('input')); ncb_hiddenField.set({ type: 'hidden', name: 'executor', value: 0, }); // Добавляем чекбокс первым по счёту полем (перед чекбоксом 'Активный') rightCol.items.insert(0, 'modx-user-new-checkbox', new Ext.form.Checkbox({ id: 'modx-user-new-checkbox', name: 'executor', hideLabel: true, boxLabel: 'Исполнитель', description: 'Назначить пользователя исполнителем', xtype: 'xcheckbox', inputValue: 1, hiddenField: ncb_hiddenField, listeners: { afterrender: function(that) { that.el.insertHtml('beforeBegin', ncb_hiddenField.dom.outerHTML); } }, checked: {$data['executor']}, })); }); }); </script> "); } break; }Оба поля в профиле есть, но сохраняется только одно patronymic. Поле surname очищается после сохранения. Подскажите как сохранить оба этих поля? Пошаговые инструкции / Дополнительные поля профиля юзера (не extended) 138 0 1
[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
[aiAssist] Я же просто попросил его создать магазин, а он СДЕЛАЛ ЭТО! А поддержка macOS не планируется, ато увидел только runner под linux? Если к примеру сайт для разработки развернут локально, настроены все доступы к нейронкам чтобы не заморачивать...
Как ограничить вебмастеру доступ к заказам? Допустим вы закроете доступ к заказам и пользователям через админку, но для полноценной работы с сайтом нужен доступ в БД, а там вся эта информация есть и спрятать её невозможно, т...
Возможно ли реализовать возможность предоплаты за доставку на сайте? Отлично, значит можно не создавать заказ пока оплата не пройдёт успешно, а поскольку класс-обработчик оплаты будет кастомный сможет сами решать какую стоимость пробрасывать. Ещё на...
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Выпустил новую версию [1.0.3-beta1] — 2026-07-13 Fixed — Inject сохраняет ``, `` и `` на полном HTML-документе (больше не оборачивает страни...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
Наиболее простое решение это опираться на IP адрес клиента и срывать\показывать нужные компоненты.
Но это отдельный проект. Владельцы и разработчики далеко не дураки — я думаю в конце концов придумают решение.
вывожу опцию
но в админке вот так
как правильно прописать?
в tinymcerte.plugins добавляем textcolor
все
toolbar
У меня стояла задача добавить поля «Дом» и «Номер квартиры» в профиль пользователя и отображать содержимое этих полей при создании нового заказа в miniShop2. Поля building и room — это единственные поля, которые не совпадают с полями в стандартном профиле пользователя, в результате чего при создании нового заказа приходится указывать номер дома и квартиры каждый раз в ручную.
Выполнил инструкцию из первого поста. После чего внес изменения в параметры сниппета officeProfile и в чанки tpl.msOrder (miniShop2), tpl.Office.profile.form (Office)
Для отображения нового поля в профиле в параметрах сниппета officeProfile, в раздел profileFields необходимо добавить поле new_field и соответствующее поле input
Для отображения нового поля при создании нового заказа в чанке tpl.msOrder отредактировал соответсвущий input
Оба поля в профиле есть, но сохраняется только одно patronymic. Поле surname очищается после сохранения. Подскажите как сохранить оба этих поля?