Андрей Степаненко
С нами с 28 октября 2014; Место в рейтинге пользователей: #72 часа назад
Подскажите, пожалуйста, пытаюсь добавить свое кастомное поле в свойства товара MiniShop3 1.3.0-beta-1.
MiniShop3 — Утилиты — Свои поля — Создать поле...
MiniShop3 1.2.0 - 1.3.0 Самое интересное 7
Вчера в 23:41
И мой метод скорее всего на шаред-хостинге работать не будет, на шареде порты закрыты и не дают законектитьсяИменно не будет работать. Тестил пока на ...
Инструкция: Настройка SOCKS5 прокси в MODX3 для работы с репозиторием 24
Вчера в 16:43
Попробуйте параметр &scrollTop=`0`
Нигде в документации он не описан (есть лишь в javascript pdopage), но мне помог в такой ситуации.
Скроллит страницу вверх при ajax пагинации pdoPage 12
Вчера в 16:16
Я к чему спросил, сейчас активно ведется разработка ключевых компонентов под MODX3. Соответственно все больше разработчиков будут выбирать 3-ку
На ...
FileMan - прикрепление файлов к ресурсам для MODX 3 70
01 февраля 2026, 17:45
UPD: Предложенный вариант с формированием ссылок рабочий, конечно, но он вызывает перезагрузку страницы.
Как бы решить эту задачу красиво, с Ajax как...
Кнопки как в ModStore 12
01 февраля 2026, 15:20
Спасибо за помощь! Попробовала рекомендации, пока не помогло. Но, думаю, действительно какой-то конфликт. Буду ещё разбираться.
Не работает пагинация pdoPage 6
30 января 2026, 17:55
Уже практически готов, допиливаю детали. В течение недели думаю релиз будет
MiniShop3 - 1.1.0 - Уже в Modstore.pro 38
30 января 2026, 14:56
Это для фронтендеров которым fenom привычен я так полагаю
Fenom.js: шаблонизатор в стиле Fenom.php для JavaScript и Vite 5
29 января 2026, 12:28
Хотя не зря, все равно мой велосипед более гибкий, в будущем может еще что то к нему прикручу.
Сниппет getPageBlockContent для вывода блоков PageBlocks (Free версия) с других страниц в MODX 6
Админка реально древняя.
Начинаешь что-то писать — и сразу осознаёшь, какой адский путь предстоит пройти, чтобы сделать одну-единственную страницу со списком и управлением.
И всё это — как в старые добрые времена с процессорами и extJs.
Руки опускаются, интерес моментально пропадает. 😅
видимо так надо) раз начал сайтом пользоваться
потом докажи что ты не кликал)))
перегенерировал
Чисто для понимания проэкспементируйте
Но на самом деле это очень плохая практика хранить по каждому результату логи
Нарушит работу сайта 100%
Быстро место закончиться на диске или база засориться.
Может быть на s3 хранение, вот этот вариант куда круче и с местом не будет проблем никогда. Доступ хоть откуда будет.
1. **Инициализация класса**: В конструкторе класса `msCartCustomHandler` вызывается конструктор родительского класса `msCartHandler`, чтобы корректно инициализировать объект.
2. **Вызов `getService`**: В методе `someMethod` происходит вызов `getService`, который загружает и инициализирует необходимый компонент (в данном примере `myComponent`).
3. **Проверка и использование**: Проверяется, что возвращаемое значение действительно является экземпляром необходимого класса компонента, после чего можно использовать методы этого компонента.
Этот подход позволяет вам гибко использовать функциональность различных компонентов MODX в вашем наследуемом классе.
### .htaccess
В файле .htaccess у вас всё верно настроено для переадресации запросов на index.php с соответствующим `cultureKey` и `q`. Однако, убедитесь, что у вас есть следующие строки в начале файла:
```apache
RewriteEngine On
RewriteBase /
```
### Роутинг
Ваш скрипт переключения контекстов выглядит правильно, но добавьте дополнительную обработку для других языков и `cultureKey`. Также убедитесь, что у вас есть все необходимые контексты в MODX.
### Пример улучшенного роутинга
```php
<?php
if ($modx->context->get('key') != «mgr») {
$allowedLanguages = ['en', 'ua', 'ru', 'fr', 'de'];
$cultureKey = isset($_REQUEST['cultureKey'])? $_REQUEST['cultureKey']: 'en';
if (in_array($cultureKey, $allowedLanguages)) {
$modx->switchContext($cultureKey);
} else {
$modx->switchContext('web');
}
unset($_GET['cultureKey']);
}
```
### Проверка контекстов и ресурсов
1. Убедитесь, что контексты `en`, `ua`, `ru`, `fr`, `de` существуют в системе.
2. Проверьте, что ресурс `franchiza` существует в каждом контексте и имеет одинаковый alias.
3. Перейдите в менеджер ресурсов и убедитесь, что все ресурсы переведены и имеют правильные alias.
### Дополнительные настройки Babel
Убедитесь, что Babel правильно настроен для всех контекстов:
1. Перейдите в «Системные настройки» -> Babel.
2. Проверьте значения настройки `babel.contextKeys` (ключи всех контекстов, разделенные запятыми).
### Пример настройки Babel
```plaintext
babel.contextKeys = en,ua,ru,fr,de
```
Если проблема сохраняется, проверьте журнал ошибок MODX на наличие дополнительных подсказок.
Данный код выполняет следующие действия:
1. Получает ID родителя текущего ресурса.
2. Использует этот ID для получения ID «дедушки» (родителя родителя).
3. Выводит заголовок страницы «дедушки» по его ID.
Этот способ достаточно прост и позволяет получить необходимые данные без использования дополнительных сниппетов.
Если у вас есть вопросы или нужна дополнительная информация, пожалуйста, обращайтесь.
github.com/modxcms/revolution/pull/16571#pullrequestreview-2061133420
На linux два вариант работы)))
— Либо работаешь под root
— Либо настраиваешь www-data пользователя и под ним работаешь
лучше под root, контейнеры всякие разные бывают, каждый под себя хрен настроишь. А с правами бороться это проблема жесткая
@Александр Мельник думаю что папка modx не под root, это на хост машина так файлы и папки выглядит))) Они на самом деле под пользователем id которого, отсутствует на хост-машине
нужно зайти в контейнер с php-fpm и посмотреть id пользователя внутри контенер, и создать такого же пользователя у себя
Еще вариант
Как еще можно указать под каким пользователем будет работать контейнер
github.com/webnitros/facade-app/blob/bcc07c7a823afb70d129fd246471472a698b2ebf/docker-compose.yml#L22
Но опять же это не поможет сильно)) Есть nginx, который все равно будет под www-data создавать файлы)))
В общем беда на linux по работе с docker)))
github.com/modxcms/revolution/pull/16569
Дальше уже можно будет чем то другим обвешивать
А вот вызов fenom, через чур усложнен, по этому хотя бы через Facade стоит прокинуть, как и многие другие сервисы.
Собственно Facade не требует ни какой дополнительно зависимости, mmxFenom уже устанавливает illuminate support где есть Facade
Ни какого прогресса не будет
github.com/modxcms/revolution/commits/3.x/core/src/Revolution/Services/Container.php
Её и использовал для подключение Facade в 3 версии modx
github.com/webnitros/facade-app/blob/2fe0344f87806bead554ba8f91e1d3d1ad62bb7f/Extras/FacadeApp/core/components/FacadeApp/elements/plugins/FacadeApp.php#L47C52-L47C53
Проблема в другом
это сам класс не позволяет делать, его нужно затачивать под такой вызов чтобы он инстанс вызывал который уже например инциализирован, чтобы постоянной инициализации класса занова небыло
Другой вариант контенеризации это сделать app() какой то, который будет обращаться к контенерам как будто
$modx->services->get('mmxFenom')
@Сергей Шлоков уже довольно давно, предлагал изменить getInstance,
и тогда можно обращаться вот так:
Кстати, где возможно, в свои проекты внедрил эту практику, работает отлично, без контейнеризации. Я не оценивал последствия, если это сделать стандартной сборке MODX 3 или 2, может там будут проблемы с процессорами. Но эта практика modX::getInstance('modX'), как и с Facade, упрощает написание кода.
Тогда можно будет сделать вот так
К примеру вызов того же pdotools в версии modx 2 сделать по максимум чтобы все вызывалось через Facade
Тогда при установке на modx 3 этого компонента, была бы обратная совместимость. Опять же не прям всех классов и функций, но таких которые являются базовыми (наивное предположение конечно же))).
Для modx @see \modX::getOption
Для pdoTools @see \pdoTools::getChunk
Cобрал пакеn по старинке через modExtra
Github: github.com/webnitros/facade-app
На модерацию уже отправил в modstore
Кому интересно, disk.yandex.ru/d/EtmO2tOPCYC6xA
Работает как в Modx 2 так и в 3 версии
Проверил на обоих версиях, одинаково отрабатывает код
С composer все еще могут возникать проблемы совместимости.
Еще событие добавил FacadeAppAddSingleton чтобы свои фасады можно было добавить github.com/webnitros/facade-app/blob/master/FACADE.md
Однако, поскольку пути формируются неправильно и указывают на абсолютные пути на сервере, вам нужно убедиться, что переменные `jsUrl` и `cssUrl` в вашем объекте `xmlReader` правильно сконфигурированы. Возможно, они вам неправильно заданы в конфигурационном файле или в другом месте, откуда вы получаете этот объект.
Если переменные `jsUrl` и `cssUrl` должны содержать абсолютные пути, вы можете изменить их в вашем объекте `xmlReader` таким образом, чтобы они содержали правильные абсолютные пути к вашим JS и CSS файлам.
Пожалуйста, убедитесь, что вы используете правильные переменные для формирования путей к вашим файлам.