Николай Савин

Николай Савин

Был в сети 29 июня 2026, 12:35
Заказы принимаю
Дорожная карта для решения вашего вопроса примерно такая (я бы делал так)
1. Ссылка Написать пользователю показывает всплывающее окно, в котором должно быть скрытое поле с id целевого пользователя
2. При отправке сообщений можно использовать ajaxForm со своим сниппетом.
3. В сниппете все очень просто. Мы имеем на входе Id пользователя.
Получаем пользователя через
$user = $modx->getObject('modUser', $id)
Далее формируем текст сообщения и отправляем сообщение через встроенный метод $user->sendEmail($message);
А зачем вы пишите вот так
"city:=":"Санкт–Петербург"
Правильно будет вот так
"city":"Санкт–Петербург"
Если вы ищите точное значение то := писать излишне. Оператор двоеточия нужен в более сложных записях.

По существу вопроса. В самой записи ничего криминального нет. Должно работать. Давайте разбираться.

Что значит не работает с дефисом? Не находит ничего или выбрасывает ошибку?
Если ошибку то какую? В Журнале ошибок MODX я имею ввиду.
В объекте по которому ищите у вас Санкт-Петербург как сохранен? С дефисом? С Тире?
{'!pdoPage' | snippet : [
            'class' => 'sOneMusicTrack',
            'loadModels' => 'ms2gallery',
            'leftJoin' => [
                "medium" => [
                    "class" => "msProductFile",
                    "alias" => "medium",
                    "on" => "medium.product_id = sOneMusicTrack.docid  AND medium.rank = 0 AND medium.path LIKE '%/medium/%'"
                ],
                "small" => [
                    "class" => "msProductFile",
                    "alias" => "small",
                    "on" => "small.product_id = sOneMusicTrack.docid  AND small.rank = 0 AND small.path LIKE '%/small/%'"
                ],
                "full" => [
                    "class" => "msProductFile",
                    "alias" => "full",
                    "on" => "full.product_id = sOneMusicTrack.docid  AND full.rank = 0 AND full.path LIKE '%/full/%'"
                ],

            ],
            'select' => [
                "medium" => "medium.url as medium",
                "small" => "small.url as small",
                "full" => "full.url as full",
                "sOneMusicTrack" => "*",
            ],
            'where' => [
                'docid' => $docid
            ],
            'limit' => 100,
             'tpl' => 'sOneMusicTrack.json'
        ]}
Ну да, зачем такую мелочь как разнодоменность упоминать в постановке задачи. Это же в корне меняет дело.
Easycomm использует в работе механизм сессий. Причем не только для хранения пользователя. Там еще что то было в сессиях
Я могу ошибаться, пусть меня поправят — но работа без хранения ключа сессии MODX не возможна. А в другом домене ключ сессии ты не получишь в из за механизма безопастности.
Насколько я помню, нет там проверки прав доступа. Компонент изначально предполагается как открытый для неавторизованных пользователей и отзывы\голосование работает без проверки прав. Откуда вы там взяли «access denied» — даже предположить боюсь